Skip to content

Commit

Permalink
feat: CE-882 versioning on prod releasesv2 (#668)
Browse files Browse the repository at this point in the history
Co-authored-by: afwilcox <[email protected]>
  • Loading branch information
barrfalk and afwilcox authored Oct 1, 2024
1 parent dbc31a9 commit 62c3d63
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 3 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/merge-hotfix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,13 @@ jobs:
runs-on: ubuntu-22.04
timeout-minutes: 1
steps:
# Get PR number for squash merges to main
- uses: actions/checkout@v4
# Get PR number for squash merges to release
- name: PR Number
id: pr
uses: bcgov-nr/[email protected]
uses: ./.github/actions/get-pr-number
- name: Set PR Output
run: echo "pr=${{ steps.pr.outputs.pr }}" >> $GITHUB_OUTPUT

# https://github.com/bcgov/quickstart-openshift-helpers
deploy-hotfix:
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/merge-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,36 @@ jobs:
- name: Set PR Output
run: echo "pr=${{ steps.pr.outputs.pr }}" >> $GITHUB_OUTPUT

create_release:
name: Create GitHub Release (Keep Version)
runs-on: ubuntu-22.04
strategy:
matrix:
package: [backend, frontend, webeoc]
steps:
- uses: actions/checkout@v4

# Retrieve the latest tag (from the release branch)
- name: Get Latest Tag
id: tag
run: |
git fetch --tags
latest_tag=$(git describe --tags --abbrev=0 --match "v*.*.*")
echo "::set-output name=latest_tag::$latest_tag"
echo "Latest tag: $latest_tag"
# Create GitHub Release using the last tag
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.tag.outputs.latest_tag }}
name: Release ${{ steps.tag.outputs.latest_tag }}
body: |
## Changes in this release:
- New features and bug fixes.
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# https://github.com/bcgov/quickstart-openshift-helpers
deploy-prod:
name: Deploy (prod)
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/pr-open.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: PR

on:
pull_request:
branches:
- release/**

concurrency:
# Cancel in progress for PR open and close
Expand All @@ -20,7 +22,6 @@ jobs:
steps:
- uses: bcgov-nr/[email protected]
with:
keep_versions: 50
package: ${{ matrix.package }}
tag: ${{ github.event.number }}
tag_fallback: latest
Expand Down
65 changes: 65 additions & 0 deletions .github/workflows/pr-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Handle PR Merge and Version Update

on:
pull_request:
types: [closed]
branches:
- release/**
jobs:
handle_pr:
name: Handle Merged PR
runs-on: ubuntu-22.04
if: ${{ github.event.pull_request.merged == true }}
steps:
- uses: actions/checkout@v4

- name: Fetch all tags
run: git fetch --tags --force

- name: Fetch tags from main
id: get_latest_tag
run: |
git fetch origin main --tags
latest_tag=$(git describe --tags --abbrev=0 origin/main)
echo "::set-output name=latest_tag::$latest_tag"
echo "Latest tag: $latest_tag"
- name: Increment Patch Version
id: increment_version
run: |
latest_tag=${{ steps.get_latest_tag.outputs.latest_tag }}
version_array=(${latest_tag//./ })
patch_version=${version_array[2]}
new_patch_version=$((patch_version + 1))
new_version="${version_array[0]}.${version_array[1]}.${new_patch_version}"
echo "::set-output name=new_version::$new_version"
echo "New version: $new_version"
- name: Update package.json versions
run: |
cd frontend
npm version ${{ steps.increment_version.outputs.new_version }} --no-git-tag-version
echo "Frontend package.json version updated to ${{ steps.increment_version.outputs.new_version }}"
cd ../backend
npm version ${{ steps.increment_version.outputs.new_version }} --no-git-tag-version
echo "Backend package.json version updated to ${{ steps.increment_version.outputs.new_version }}"
cd ../webeoc
npm version ${{ steps.increment_version.outputs.new_version }} --no-git-tag-version
echo "WebEOC package.json version updated to ${{ steps.increment_version.outputs.new_version }}"
cd ..
- name: Commit and Push Version Update
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git add frontend/package.json backend/package.json webeoc/package.json
git commit -m "chore: bump version to ${{ steps.increment_version.outputs.new_version }}"
git push origin HEAD:refs/heads/${{ github.head_ref }}
- name: Create Git Tag
run: |
git tag "${{ steps.increment_version.outputs.new_version }}"
git push origin "${{ steps.increment_version.outputs.new_version }}"
50 changes: 50 additions & 0 deletions .github/workflows/release-branch-creation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Create New Tag on Release Branch Creation

on:
create:

jobs:
bump_minor_version:
name: Bump Minor Version and Create New Tag
runs-on: ubuntu-22.04
# Only trigger for main release branches
if: startsWith(github.ref, 'refs/heads/release/') && !contains(github.ref, '/')
steps:
- uses: actions/checkout@v4

- name: Install npm
run: sudo apt-get install -y npm

# Fetch the latest tag (sort by creation date)
- name: Fetch latest tag
id: latest_tag
run: |
git fetch --tags
latest_tag=$(git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)
if [ -z "$latest_tag" ]; then
echo "No previous tags found, starting with v0.1.0"
latest_tag="v0.0.0"
fi
echo "::set-output name=latest_tag::$latest_tag"
echo "Latest tag: $latest_tag"
# Bump the minor version and reset the patch to 0
- name: Bump minor version
id: bump_version
run: |
latest_tag="${{ steps.latest_tag.outputs.latest_tag }}"
version_array=(${latest_tag//./ })
major_version=${version_array[0]//v/}
minor_version=${version_array[1]}
patch_version=${version_array[2]}
new_minor_version=$((minor_version + 1))
new_version="v${major_version}.${new_minor_version}.0"
echo "::set-output name=new_version::$new_version"
echo "New version: $new_version"
# Create a new tag with the bumped minor version
- name: Create and push the new tag
run: |
new_version="${{ steps.bump_version.outputs.new_version }}"
git tag "$new_version"
git push origin "$new_version"

0 comments on commit 62c3d63

Please sign in to comment.