-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DEVOPS-1840 - Update for automatic version bump calculation (#19)
- Loading branch information
Showing
1 changed file
with
66 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,34 @@ | ||
|
||
--- | ||
name: Version Bump | ||
run-name: Version Bump - v${{ inputs.version_number }} | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version_number: | ||
description: "New version (example: '2024.2.0')" | ||
required: true | ||
version_number_override: | ||
description: "New version override (leave blank for automatic calculation, example: '2024.1.0')" | ||
required: false | ||
type: string | ||
|
||
jobs: | ||
bump_version: | ||
name: "Bump Version to v${{ inputs.version_number }}" | ||
name: Bump Version | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Validate version input | ||
if: ${{ inputs.version_number_override != '' }} | ||
uses: bitwarden/gh-actions/version-check@main | ||
with: | ||
version: ${{ inputs.version_number_override }} | ||
|
||
- name: Checkout Branch | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
with: | ||
ref: main | ||
|
||
- name: Login to Azure - CI Subscription | ||
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 | ||
with: | ||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} | ||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} | ||
|
||
- name: Retrieve secrets | ||
id: retrieve-secrets | ||
|
@@ -29,11 +39,6 @@ jobs: | |
github-gpg-private-key-passphrase, | ||
github-pat-bitwarden-devops-bot-repo-scope" | ||
|
||
- name: Checkout Branch | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
with: | ||
ref: main | ||
|
||
- name: Import GPG key | ||
uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 # v6.1.0 | ||
with: | ||
|
@@ -42,22 +47,35 @@ jobs: | |
git_user_signingkey: true | ||
git_commit_gpgsign: true | ||
|
||
- name: Set up Git | ||
run: | | ||
git config --local user.email "[email protected]" | ||
git config --local user.name "bitwarden-devops-bot" | ||
- name: Create Version Branch | ||
id: create-branch | ||
run: | | ||
NAME=version_bump_${{ github.ref_name }}_${{ inputs.version_number }} | ||
NAME=version_bump_${{ github.ref_name }}_$(date +"%Y-%m-%d") | ||
git switch -c $NAME | ||
echo "name=$NAME" >> $GITHUB_OUTPUT | ||
- name: Install xmllint | ||
run: sudo apt install -y libxml2-utils | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y libxml2-utils | ||
- name: Verify input version | ||
env: | ||
NEW_VERSION: ${{ inputs.version_number }} | ||
- name: Get current version | ||
id: current-version | ||
run: | | ||
CURRENT_VERSION=$(xmllint -xpath "/Project/PropertyGroup/Version/text()" src/Handlebars.conf/Handlebars.conf.csproj) | ||
echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT | ||
- name: Verify input version | ||
if: ${{ inputs.version_number_override != '' }} | ||
env: | ||
CURRENT_VERSION: ${{ steps.current-version.outputs.version }} | ||
NEW_VERSION: ${{ inputs.version_number_override }} | ||
run: | | ||
# Error if version has not changed. | ||
if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then | ||
echo "Version has not changed." | ||
|
@@ -73,16 +91,37 @@ jobs: | |
exit 1 | ||
fi | ||
- name: Bump Version - csproj | ||
- name: Calculate next release version | ||
if: ${{ inputs.version_number_override == '' }} | ||
id: calculate-next-version | ||
uses: bitwarden/gh-actions/version-next@main | ||
with: | ||
version: ${{ steps.current-version.outputs.version }} | ||
|
||
- name: Bump Version - csproj - Version Override | ||
if: ${{ inputs.version_number_override != '' }} | ||
id: bump-version-override | ||
uses: bitwarden/gh-actions/version-bump@main | ||
with: | ||
version: ${{ inputs.version_number }} | ||
file_path: "src/Handlebars.conf/Handlebars.conf.csproj" | ||
version: ${{ inputs.version_number_override }} | ||
|
||
- name: Setup git | ||
- name: Bump Version - csproj - Automatic Calculation | ||
if: ${{ inputs.version_number_override == '' }} | ||
id: bump-version-automatic | ||
uses: bitwarden/gh-actions/version-bump@main | ||
with: | ||
file_path: "src/Handlebars.conf/Handlebars.conf.csproj" | ||
version: ${{ steps.calculate-next-version.outputs.version }} | ||
|
||
- name: Set final version output | ||
id: set-final-version-output | ||
run: | | ||
git config --local user.email "[email protected]" | ||
git config --local user.name "bitwarden-devops-bot" | ||
if [[ "${{ steps.bump-version-override.outcome }}" == "success" ]]; then | ||
echo "version=${{ inputs.version_number_override }}" >> $GITHUB_OUTPUT | ||
elif [[ "${{ steps.bump-version-automatic.outcome }}" == "success" ]]; then | ||
echo "version=${{ steps.calculate-next-version.outputs.version }}" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Check if version changed | ||
id: version-changed | ||
|
@@ -96,7 +135,7 @@ jobs: | |
- name: Commit files | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
run: git commit -m "Bumped version to ${{ inputs.version_number }}" -a | ||
run: git commit -m "Bumped version to ${{ steps.set-final-version-output.outputs.version }}" -a | ||
|
||
- name: Push changes | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
|
@@ -110,7 +149,7 @@ jobs: | |
env: | ||
GH_TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} | ||
PR_BRANCH: ${{ steps.create-branch.outputs.name }} | ||
TITLE: "Bump version to ${{ inputs.version_number }}" | ||
TITLE: "Bump version to ${{ steps.set-final-version-output.outputs.version }}" | ||
run: | | ||
PR_URL=$(gh pr create --title "$TITLE" \ | ||
--base "main" \ | ||
|
@@ -126,16 +165,18 @@ jobs: | |
- [X] Other | ||
## Objective | ||
Automated version bump to ${{ inputs.version_number }}") | ||
Automated version bump to ${{ steps.set-final-version-output.outputs.version }}") | ||
echo "pr_number=${PR_URL##*/}" >> $GITHUB_OUTPUT | ||
- name: Approve PR | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} | ||
run: gh pr review $PR_NUMBER --approve | ||
|
||
- name: Merge PR | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
env: | ||
GH_TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} | ||
PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} | ||
|