You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
8.6 KiB
226 lines
8.6 KiB
name: Update Versions |
|
|
|
on: |
|
workflow_dispatch: |
|
|
|
jobs: |
|
setup: |
|
name: Setup |
|
if: github.ref_name == 'main' |
|
runs-on: ubuntu-22.04 |
|
outputs: |
|
core_version: ${{ steps.get-core.outputs.version }} |
|
core_version_update: ${{ steps.core-update.outputs.update }} |
|
web_version: ${{ steps.get-web.outputs.version }} |
|
web_version_update: ${{ steps.web-update.outputs.update }} |
|
key_connector_version: ${{ steps.get-key-connector.outputs.version }} |
|
key_connector_version_update: ${{ steps.key-connector-update.outputs.update }} |
|
|
|
steps: |
|
- name: Checkout Branch |
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
|
|
|
- name: Get Latest Core Version |
|
id: get-core |
|
uses: bitwarden/gh-actions/get-release-version@main |
|
with: |
|
repository: bitwarden/server |
|
trim: true |
|
|
|
- name: Check if Core Version needs updating |
|
id: core-update |
|
env: |
|
LATEST_CORE_VERSION: ${{ steps.get-core.outputs.version }} |
|
run: | |
|
CORE_VERSION=$(sed -r -n "s/COREVERSION=\"([0-9]+\.[0-9]+\.[0-9]+)\"/\1/p" bitwarden.sh) |
|
echo "Core Version: $CORE_VERSION" |
|
echo "Latest Core Version: $LATEST_CORE_VERSION" |
|
if [ "$CORE_VERSION" != "$LATEST_CORE_VERSION" ]; then |
|
echo "Needs Core update!" |
|
echo "update=1" >> $GITHUB_OUTPUT |
|
else |
|
echo "update=0" >> $GITHUB_OUTPUT |
|
fi |
|
|
|
- name: Get Latest Web Version |
|
id: get-web |
|
uses: bitwarden/gh-actions/get-release-version@main |
|
with: |
|
repository: bitwarden/clients |
|
monorepo: true |
|
monorepo-project: web |
|
trim: true |
|
|
|
- name: Check if Web Version needs updating |
|
id: web-update |
|
env: |
|
LATEST_WEB_VERSION: ${{ steps.get-web.outputs.version }} |
|
run: | |
|
WEB_VERSION=$(sed -r -n "s/WEBVERSION=\"([0-9]+\.[0-9]+\.[0-9]+)\"/\1/p" bitwarden.sh) |
|
echo "Web Version: $WEB_VERSION" |
|
echo "Latest Web Version: $LATEST_WEB_VERSION" |
|
if [ "$WEB_VERSION" != "$LATEST_WEB_VERSION" ]; then |
|
echo "Needs Web update!" |
|
echo "update=1" >> $GITHUB_OUTPUT |
|
else |
|
echo "update=0" >> $GITHUB_OUTPUT |
|
fi |
|
|
|
- name: Get Latest Key Connector Version |
|
id: get-key-connector |
|
uses: bitwarden/gh-actions/get-release-version@main |
|
with: |
|
repository: bitwarden/key-connector |
|
trim: true |
|
|
|
- name: Check if Key Connector Version needs updating |
|
id: key-connector-update |
|
env: |
|
LATEST_KEY_CONNECTOR_VERSION: ${{ steps.get-key-connector.outputs.version }} |
|
run: | |
|
KEY_CONNECTOR_VERSION=$(sed -r -n "s/KEYCONNECTORVERSION=\"([0-9]+\.[0-9]+\.[0-9]+)\"/\1/p" bitwarden.sh) |
|
echo "Key Connector Version: $KEY_CONNECTOR_VERSION" |
|
echo "Latest Key Connector Version: $LATEST_KEY_CONNECTOR_VERSION" |
|
if [ "$KEY_CONNECTOR_VERSION" != "$LATEST_KEY_CONNECTOR_VERSION" ]; then |
|
echo "Needs Key Connector update!" |
|
echo "update=1" >> $GITHUB_OUTPUT |
|
else |
|
echo "update=0" >> $GITHUB_OUTPUT |
|
fi |
|
|
|
|
|
update-versions: |
|
name: "Update versions" |
|
if: | |
|
needs.setup.outputs.core_version_update == 1 || |
|
needs.setup.outputs.web_version_update == 1 || |
|
needs.setup.outputs.key_connector_version_update == 1 |
|
runs-on: ubuntu-22.04 |
|
needs: setup |
|
steps: |
|
- name: Log in 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" |
|
|
|
- name: Checkout Branch |
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
|
with: |
|
ref: main |
|
|
|
- name: Import GPG key |
|
uses: crazy-max/ghaction-import-gpg@cb9bde2e2525e640591a934b1fd28eef1dcaf5e5 # v6.2.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 "106330231+bitwarden-devops-bot@users.noreply.github.com" |
|
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: Update Core Version |
|
env: |
|
VERSION: ${{ needs.setup.outputs.core_version }} |
|
run: | |
|
sed -i -e "/^\s*COREVERSION\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.sh |
|
sed -i -e "/^\s*\$coreVersion\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.ps1 |
|
sed -i -e '/"coreVersion":/ s/"coreVersion":[^,]*/"coreVersion":"'$VERSION'"/' version.json |
|
|
|
- name: Update Web Version |
|
env: |
|
VERSION: ${{ needs.setup.outputs.web_version }} |
|
run: | |
|
sed -i -e "/^\s*WEBVERSION\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.sh |
|
sed -i -e "/^\s*\$webVersion\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.ps1 |
|
sed -i -e '/"webVersion":/ s/"webVersion":[^,]*/"webVersion":"'$VERSION'"/' version.json |
|
|
|
- name: Update Key Connector Version |
|
env: |
|
VERSION: ${{ needs.setup.outputs.key_connector_version }} |
|
run: | |
|
sed -i -e "/^\s*KEYCONNECTORVERSION\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.sh |
|
sed -i -e "/^\s*\$keyConnectorVersion\s*=\s*/s/[0-9]\+.[0-9]\+.[0-9]\+/$VERSION/" bitwarden.ps1 |
|
sed -i -e '/"keyConnectorVersion":/ s/"keyConnectorVersion":[^,]*/"keyConnectorVersion":"'$VERSION'"/' version.json |
|
|
|
- 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 "Updated core, web, and key-connector versions" -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@67e27a7eb7db372a1c61a7f9bdab8699e9ee57f7 # v1.11.3 |
|
id: app-token |
|
with: |
|
app-id: ${{ secrets.BW_GHAPP_ID }} |
|
private-key: ${{ secrets.BW_GHAPP_KEY }} |
|
owner: ${{ github.repository_owner }} |
|
|
|
- name: Create versions PR |
|
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' }} |
|
env: |
|
GH_TOKEN: ${{ steps.app-token.outputs.token }} |
|
PR_BRANCH: ${{ steps.create-branch.outputs.name }} |
|
TITLE: "Update core, web, and key-connector versions" |
|
run: | |
|
PR_URL=$(gh pr create --title "$TITLE" \ |
|
--base "main" \ |
|
--head "$PR_BRANCH" \ |
|
--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 updates to core, web, and key-connector versions in version.json, bitwarden.sh and bitwarden.ps1.") |
|
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
|
|
|