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 #638

Closed
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
71 changes: 71 additions & 0 deletions .github/workflows/pr-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
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]"

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

# 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
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.26.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
Loading