Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: CE-882 versioning on prod releases #640

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
9 changes: 6 additions & 3 deletions .github/workflows/pr-open.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
name: PR

on:
pull_request:

workflow_run:
workflows: ["PR Bump Version Workflow"]
types:
- completed
branches:
- release/**
concurrency:
# Cancel in progress for PR open and close
group: ${{ github.event.number }}
Expand All @@ -20,7 +24,6 @@ jobs:
steps:
- uses: bcgov-nr/action-builder-ghcr@v2.0.2
with:
keep_versions: 50
package: ${{ matrix.package }}
tag: ${{ github.event.number }}
tag_fallback: latest
Expand Down
81 changes: 81 additions & 0 deletions .github/workflows/pr-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: PR Bump Version Workflow

on:
pull_request:
types: [opened]
branches:
- release/**

concurrency:
# Cancel in progress for PR open and close
group: ${{ github.event.number }}
cancel-in-progress: true

jobs:
bump_version:
name: Bump Version for Release Branch
runs-on: ubuntu-22.04
strategy:
matrix:
package: [backend, frontend, webeoc]
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

- name: Install jq (JSON parser)
run: sudo apt-get install -y jq

# Check if it's the first PR into the release branch (no existing tags)
- name: Check for existing tags
id: check_tag
run: |
git fetch --tags
latest_tag=$(git describe --tags --abbrev=0 --match "v*.*.*" || echo "none")
echo "::set-output name=latest_tag::$latest_tag"

# Bump minor version and reset patch for first PR
- name: Bump minor version and reset patch for first PR
if: ${{ steps.check_tag.outputs.latest_tag == 'none' }}
run: |
cd ${{ matrix.package }}
current_version=$(jq -r '.version' package.json)
new_version=$(echo $current_version | awk -F. '{$2+=1; $3=0; print $1"."$2"."$3}')
jq --arg v "$new_version" '.version = $v' package.json > package.json.tmp && mv package.json.tmp package.json
echo "First PR: Resetting patch and bumping minor. New version: $new_version"

# Bump patch version for subsequent PRs
- name: Bump patch version for subsequent PRs
if: ${{ steps.check_tag.outputs.latest_tag != 'none' }}
run: |
cd ${{ matrix.package }}
current_version=$(jq -r '.version' package.json)
new_version=$(echo $current_version | awk -F. '{$3+=1; print $1"."$2"."$3}')
jq --arg v "$new_version" '.version = $v' package.json > package.json.tmp && mv package.json.tmp package.json
echo "Subsequent PR: Bumping patch. New version: $new_version"

- name: Set Git Identity
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"

# Commit and push version bump
- name: Commit and push version bump
run: |
git add ${{ matrix.package }}/package.json
git commit -m "chore(${{ matrix.package }}): bump version."
git push origin HEAD:refs/heads/${{ github.head_ref }} # Push to the branch associated with the PR

# Pull the latest changes with rebase before pushing
- name: Pull latest changes with rebase before pushing
run: |
git pull --rebase origin ${{ github.head_ref }}

# Push the rebased version bump with retry on failure
- name: Push rebased version bump with retry
run: |
git push origin HEAD:refs/heads/${{ github.head_ref }} || (
echo "Push failed, retrying..." &&
git pull --rebase origin ${{ github.head_ref }} &&
git push origin HEAD:refs/heads/${{ github.head_ref }}
)
2 changes: 1 addition & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "nr-compliance-enforcement",
"version": "0.0.1",
"version": "0.26.0",
"description": "BCGov devops quickstart. For reference, testing and new projects.",
"main": "index.js",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "nr-sample-natcomplaints",
"version": "1.0.1",
"name": "nr-natcomplaints",
"version": "0.27.0",
"private": true,
"dependencies": {
"@faker-js/faker": "^8.0.2",
Expand Down
2 changes: 1 addition & 1 deletion webeoc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "webeoc",
"version": "0.0.1",
"version": "0.26.0",
"description": "",
"author": "",
"private": true,
Expand Down