Bump version #26
Workflow file for this run
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
--- | |
name: Bump version | |
on: | |
workflow_dispatch: | |
inputs: | |
version_number_override: | |
description: "New version override (leave blank for automatic calculation, example: '2024.1.0')" | |
required: false | |
type: string | |
enable_slack_notification: | |
description: "Enable Slack notifications for upcoming release?" | |
default: false | |
type: boolean | |
jobs: | |
bump_version: | |
name: Bump version | |
runs-on: ubuntu-22.04 | |
outputs: | |
version: ${{ steps.set-final-version-output.outputs.version }} | |
steps: | |
- name: Validate version input | |
if: ${{ inputs.version_number_override != '' }} | |
uses: bitwarden/gh-actions/version-check@main | |
with: | |
version: ${{ inputs.version_number_override }} | |
- name: Check for Slack notifications | |
run: | | |
if [[ "${{ inputs.enable_slack_notification }}" == true ]]; then | |
echo "Slack notifications enabled." | |
else | |
echo "Slack notifications disabled." | |
fi | |
- name: Check out repo | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Log in to Azure | |
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" | |
- 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: 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 }}_$(date +"%Y-%m-%d") | |
git switch -c $NAME | |
echo "name=$NAME" >> $GITHUB_OUTPUT | |
- name: Install xmllint | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libxml2-utils | |
- name: Get current version | |
id: current-version | |
run: | | |
CURRENT_VERSION=$(xmllint -xpath "/Project/PropertyGroup/Version/text()" Directory.Build.props) | |
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." | |
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: 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 props for version override | |
if: ${{ inputs.version_number_override != '' }} | |
id: bump-version-override | |
uses: bitwarden/gh-actions/version-bump@main | |
with: | |
file_path: "Directory.Build.props" | |
version: ${{ inputs.version_number_override }} | |
- name: Bump version props with automatic calculation | |
if: ${{ inputs.version_number_override == '' }} | |
id: bump-version-automatic | |
uses: bitwarden/gh-actions/version-bump@main | |
with: | |
file_path: "Directory.Build.props" | |
version: ${{ steps.calculate-next-version.outputs.version }} | |
- name: Set final version output | |
id: set-final-version-output | |
run: | | |
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 | |
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 ${{ steps.set-final-version-output.outputs.version }}" -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: Generate GH App token | |
uses: actions/create-github-app-token@3378cda945da322a8db4b193e19d46352ebe2de5 # v1.10.4 | |
id: app-token | |
with: | |
app-id: ${{ secrets.BW_GHAPP_ID }} | |
private-key: ${{ secrets.BW_GHAPP_KEY }} | |
owner: ${{ github.repository_owner }} | |
- name: Create version PR | |
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} | |
id: create-pr | |
env: | |
GH_TOKEN: ${{ steps.app-token.outputs.token }} | |
PR_BRANCH: ${{ steps.create-branch.outputs.name }} | |
TITLE: "Bump version to ${{ steps.set-final-version-output.outputs.version }}" | |
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 ${{ 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.app-token.outputs.token }} | |
# PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }} | |
# run: gh pr merge $PR_NUMBER --squash --auto --delete-branch | |
# - name: Report upcoming release version to Slack | |
# if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' && inputs.enable_slack_notification == true }} | |
# uses: bitwarden/gh-actions/report-upcoming-release-version@main | |
# with: | |
# version: ${{ steps.set-final-version-output.outputs.version }} | |
# project: ${{ github.repository }} | |
# AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} |