Skip to content

Commit

Permalink
Merge pull request #2 from EugeneLightsOn/automated-release
Browse files Browse the repository at this point in the history
Test automated release workflow - DRAFT 1 PR
  • Loading branch information
EugeneLightsOn authored Jan 16, 2025
2 parents 9ce3c5c + 2fe736b commit 145ce97
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions .github/workflows/automated_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Automated Release

on:
push:
branches:
- main

jobs:
check-and-release:
runs-on: ubuntu-latest

steps:
# Checkout
- name: Checkout code
uses: actions/checkout@v3

# Get the latest release version
- name: Get latest release version
id: get_latest_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
latest_release=$(gh release list --limit 1 --json tagName --jq '.[0].tagName' || echo "v0.0.0")
echo "latest_release=${latest_release}" >> $GITHUB_ENV
echo "latest_release=${latest_release}"
# Extract version from _RELEASE_VERSION constant in main.py
- name: Extract version from main.py
id: get_file_version
run: |
file_version=$(grep '_RELEASE_VERSION' src/backend/main.py | sed -E 's/.*"([^"]+)".*/\1/')
echo "file_version=${file_version}" >> $GITHUB_ENV
echo "file_version=${file_version}"
# Check if new version is greater
- name: Check if new version is greater
id: check_version
run: |
latest_version_number=$(echo "$latest_release" | sed 's/^v//')
file_version_number=$(echo "$file_version" | sed 's/^v//')
# Get major, minor, and patch from the versions
IFS='.' read -r l_major l_minor l_patch <<<"$latest_version_number"
IFS='.' read -r f_major f_minor f_patch <<<"$file_version_number"
# Compare major, minor, and patch versions
if [ "$f_major" -gt "$l_major" ] ||
([ "$f_major" -eq "$l_major" ] && [ "$f_minor" -gt "$l_minor" ]) ||
([ "$f_major" -eq "$l_major" ] && [ "$f_minor" -eq "$l_minor" ] && [ "$f_patch" -gt "$l_patch" ]); then
echo "new_version_needed=true" >> $GITHUB_ENV
echo "NEED TO CREATE A NEW RELEASE"
else
echo "new_version_needed=false" >> $GITHUB_ENV
echo "NO NEED TO CREATE A NEW RELEASE"
exit 0
fi
# Changelog generation
- name: Generate pull request changelog
id: generate_changelog
run: |
echo "Generating changelog from ${{ env.latest_release }} to ${{ env.file_version }}..."
changelog=$(gh pr list --state merged --base main --search "merged:>${{ env.latest_release }}" --json title --jq '.[].title')
if [[ -z "$changelog" ]]; then
echo "No pull requests found since the last release."
echo "changelog=No changes since the last release." >> $GITHUB_ENV
else
echo "Changelog:"
echo "$changelog"
echo "changelog=$changelog" >> $GITHUB_ENV
fi
# Create a new release if the version is greater
- name: Create new release
if: env.new_version_needed == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
release_date=$(date +'%Y-%m-%d')
release_title="${release_date} (${file_version})"
description="**Full Changelog**: https://github.com/${GITHUB_REPOSITORY}/compare/${latest_release}...${file_version}"
echo "Creating release with title: $release_title"
echo "Creating release with notes: $description"
gh release create "${file_version}" \
--title "$release_title" --draft \
--notes "$description"
echo "Release created successfully."

0 comments on commit 145ce97

Please sign in to comment.