diff --git a/.github/workflows/stable-releases-1_pull-request.yml b/.github/workflows/stable-releases-1_pull-request.yml index 8c8e5654ad..583bf3670c 100644 --- a/.github/workflows/stable-releases-1_pull-request.yml +++ b/.github/workflows/stable-releases-1_pull-request.yml @@ -1,3 +1,5 @@ +name: Stable Release Step 1 - Create PR + on: workflow_dispatch: schedule: @@ -5,9 +7,16 @@ on: jobs: create-release-pull-request: runs-on: ubuntu-latest + if: github.ref == 'refs/heads/stable' steps: - uses: actions/checkout@v4 + with: + ref: dev-branch - name: create pull request - run: gh pr create -B stable -H dev-branch --title "Monthly Release PR - $(date '+%Y-%m-%d')" --body "Monthly pull request for creating the latest stable release from staged security fixes, bug fixes, and minor enhancements." + run: | + echo 'Get version to be released and create PR with that in the name' + system_file="$(git rev-parse --show-toplevel)/packages/web/lib/fog/system.class.php" + tag=$(grep "define('FOG_VERSION'" $system_file | sed "s/.*FOG_VERSION', '\([^']*\)');/\1/") + gh pr create -B stable -H dev-branch --title "Stable Release PR For ${tag} - $(date '+%Y-%m-%d')" --body "Pull Request for creating the latest stable release from staged security fixes, bug fixes, and minor enhancements in dev-branch. Created as needed or monthly on 15th of every month, released once tests are passing" env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/stable-releases-2_test-validity b/.github/workflows/stable-releases-2_test-validity deleted file mode 100644 index f1e963e633..0000000000 --- a/.github/workflows/stable-releases-2_test-validity +++ /dev/null @@ -1,6 +0,0 @@ -# on a monthly pr created from other workflow -# test validity of install -# down the road-test various functions (deploy, capture, API) -# Fix version if needed -# merge pull request with generic commit -# maybe update version if not handled in hook diff --git a/.github/workflows/stable-releases-2_test-validity.yml b/.github/workflows/stable-releases-2_test-validity.yml new file mode 100644 index 0000000000..633ce3e29c --- /dev/null +++ b/.github/workflows/stable-releases-2_test-validity.yml @@ -0,0 +1,37 @@ +name: Stable Release Step 2 - Validate PR + +on: + workflow_dispatch: + # pull_request: + # types: + # - open + # branches: + # - dev-branch + # - stable + +jobs: + Merge-After-All-Tests-Passed: + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/stable' + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Merge The PR + run: | + echo 'Get the tag' + git fetch origin dev-branch + git checkout dev-branch + system_file="$(git rev-parse --show-toplevel)/packages/web/lib/fog/system.class.php" + tag=$(grep "define('FOG_VERSION'" $system_file | sed "s/.*FOG_VERSION', '\([^']*\)');/\1/") + git checkout stable + echo "merge the pull request bringing dev-branch into stable"; + gh pr merge dev-branch --squash --subject "Stable Release - ${tag}"; + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + +# on a monthly pr created from other workflow +# test validity of install +# down the road-test various functions (deploy, capture, API) +# Fix version if needed +# merge pull request with generic commit +# maybe update version if not handled in hook \ No newline at end of file diff --git a/.github/workflows/stable-releases-3_tag-and-release b/.github/workflows/stable-releases-3_tag-and-release deleted file mode 100644 index 118481e3e0..0000000000 --- a/.github/workflows/stable-releases-3_tag-and-release +++ /dev/null @@ -1,6 +0,0 @@ -#on merge of monthly release pr -# create tag of current version -# create release of new tag -# generate release notes -# update website? -# send announcements? diff --git a/.github/workflows/stable-releases-3_tag-and-release.yml b/.github/workflows/stable-releases-3_tag-and-release.yml new file mode 100644 index 0000000000..bd875957be --- /dev/null +++ b/.github/workflows/stable-releases-3_tag-and-release.yml @@ -0,0 +1,37 @@ +name: Stable Release Step 3 - Tag and Release + +on: + workflow_dispatch: + # pull_request: + # types: + # - closed + +jobs: + Tag-and-release: + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/stable' + steps: + - name: Check-out code to release + uses: actions/checkout@v4 + - name: Tag and release + run: | + echo 'Find the version to use for the tag, create the release, and sync the dev and stable branches' + echo 'find the version to create as a tag' + system_file="$(git rev-parse --show-toplevel)/packages/web/lib/fog/system.class.php" + tag=$(grep "define('FOG_VERSION'" $system_file | sed "s/.*FOG_VERSION', '\([^']*\)');/\1/") + echo 'create the tag and release...' + gh release create $tag --latest --generate-notes --target stable + echo 'sync dev-branch with stable branch (merge stable into dev-branch)...' + # git config core.hooksPath .githooks #custom githooks not working in github runner + gh pr create -B dev-branch -H stable --title "merge stable - ${tag} into dev" --body "Pull Request for syncing stable release commit back to dev after a release" + gh pr merge stable --merge --subject "merge stable - ${tag} into dev"; + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + +# on merge of monthly release pr +# get/calculate current version +# create tag of current version +# create release of new tag +# generate release notes +# send announcements? \ No newline at end of file