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

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
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
28 changes: 28 additions & 0 deletions .github/workflows/merge-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,34 @@ jobs:
- name: Set PR Output
run: echo "pr=${{ steps.pr.outputs.pr }}" >> $GITHUB_OUTPUT

create-tag:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

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

# Get version from package.json
- name: Get version from package.json
id: get_version
run: |
version=$(jq -r '.version' backend/package.json) # Assuming all package.json files have the same version
echo "Version: $version"
echo "::set-output name=version::$version"

# Set Git Identity for tagging
- 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]"

# Create a tag based on the version from package.json
- name: Create Git Tag
run: |
git tag "v${{ steps.get_version.outputs.version }}"
git push origin "v${{ steps.get_version.outputs.version }}"

# https://github.com/bcgov/quickstart-openshift-helpers
deploy-test:
name: Deploy (test)
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/action-builder-ghcr@v2.0.2
with:
keep_versions: 50
package: ${{ matrix.package }}
tag: ${{ github.event.number }}
tag_fallback: latest
Expand Down
101 changes: 101 additions & 0 deletions .github/workflows/pr-version-bump.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
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 forRelease 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"

# Upload the updated package.json file
- name: Upload updated package.json
uses: actions/upload-artifact@v3
with:
name: updated-package-${{ matrix.package }}
path: ${{ matrix.package }}/package.json

commit_and_push:
name: Commit and Push All Changes
runs-on: ubuntu-22.04
needs: bump_version # Wait for the bump_version job to complete
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}

# Download all updated package.json files from the matrix jobs
- name: Download updated package.json files
uses: actions/download-artifact@v3
with:
name: updated-package-backend
path: backend/
- name: Download updated frontend package.json
uses: actions/download-artifact@v3
with:
name: updated-package-frontend
path: frontend/
- name: Download updated webeoc package.json
uses: actions/download-artifact@v3
with:
name: updated-package-webeoc
path: webeoc/

# Set Git Identity
- 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 all changes at once
- name: Commit and push all changes
run: |
git add backend/package.json frontend/package.json webeoc/package.json
git commit -m "chore: bump versions for backend, frontend, and webeoc"
git push origin HEAD:refs/heads/${{ github.head_ref }} # Push to the same branch
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.27.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.27.0",
"description": "",
"author": "",
"private": true,
Expand Down
Loading