-
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.
- Loading branch information
Showing
1 changed file
with
142 additions
and
0 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 |
---|---|---|
@@ -0,0 +1,142 @@ | ||
|
||
--- | ||
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 | ||
|
||
jobs: | ||
bump_version: | ||
name: "Bump Version to v${{ inputs.version_number }}" | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: Login to Azure - CI Subscription | ||
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0 | ||
with: | ||
creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} | ||
|
||
- name: Retrieve secrets | ||
id: retrieve-secrets | ||
uses: bitwarden/gh-actions/get-keyvault-secrets@main | ||
with: | ||
keyvault: "bitwarden-ci" | ||
secrets: "github-gpg-private-key, | ||
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: | ||
gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }} | ||
passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }} | ||
git_user_signingkey: true | ||
git_commit_gpgsign: true | ||
|
||
- name: Create Version Branch | ||
id: create-branch | ||
run: | | ||
NAME=version_bump_${{ github.ref_name }}_${{ inputs.version_number }} | ||
git switch -c $NAME | ||
echo "name=$NAME" >> $GITHUB_OUTPUT | ||
- name: Install xmllint | ||
run: sudo apt install -y libxml2-utils | ||
|
||
- name: Verify input version | ||
env: | ||
NEW_VERSION: ${{ inputs.version_number }} | ||
run: | | ||
CURRENT_VERSION=$(xmllint -xpath "/Project/PropertyGroup/Version/text()" src/Handlebars.conf/Handlebars.conf.csproj) | ||
# Error if version has not changed. | ||
if [[ "$NEW_VERSION" == "$CURRENT_VERSION" ]]; then | ||
echo "Version has not changed." | ||
exit 1 | ||
fi | ||
# Check if version is newer. | ||
printf '%s\n' "${CURRENT_VERSION}" "${NEW_VERSION}" | sort -C -V | ||
if [ $? -eq 0 ]; then | ||
echo "Version check successful." | ||
else | ||
echo "Version check failed." | ||
exit 1 | ||
fi | ||
- name: Bump Version - csproj | ||
uses: bitwarden/gh-actions/version-bump@main | ||
with: | ||
version: ${{ inputs.version_number }} | ||
file_path: "src/Handlebars.conf/Handlebars.conf.csproj" | ||
|
||
- name: Setup git | ||
run: | | ||
git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com" | ||
git config --local user.name "bitwarden-devops-bot" | ||
- name: Check if version changed | ||
id: version-changed | ||
run: | | ||
if [ -n "$(git status --porcelain)" ]; then | ||
echo "changes_to_commit=TRUE" >> $GITHUB_OUTPUT | ||
else | ||
echo "changes_to_commit=FALSE" >> $GITHUB_OUTPUT | ||
echo "No changes to commit!"; | ||
fi | ||
- name: Commit files | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
run: git commit -m "Bumped version to ${{ inputs.version_number }}" -a | ||
|
||
- name: Push changes | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
env: | ||
PR_BRANCH: ${{ steps.create-branch.outputs.name }} | ||
run: git push -u origin $PR_BRANCH | ||
|
||
- name: Create Version PR | ||
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | ||
id: create-pr | ||
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 }}" | ||
run: | | ||
PR_URL=$(gh pr create --title "$TITLE" \ | ||
--base "main" \ | ||
--head "$PR_BRANCH" \ | ||
--label "version update" \ | ||
--label "automated pr" \ | ||
--body " | ||
## Type of change | ||
- [ ] Bug fix | ||
- [ ] New feature development | ||
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc) | ||
- [ ] Build/deploy pipeline (DevOps) | ||
- [X] Other | ||
## Objective | ||
Automated version bump to ${{ inputs.version_number }}") | ||
echo "pr_number=${PR_URL##*/}" >> $GITHUB_OUTPUT | ||
- name: Approve PR | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} | ||
run: gh pr review $PR_NUMBER --approve | ||
|
||
- name: Merge PR | ||
env: | ||
GH_TOKEN: ${{ steps.retrieve-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }} | ||
PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} | ||
run: gh pr merge $PR_NUMBER --squash --auto --delete-branch |