name: Update Versions on: workflow_dispatch: jobs: setup: name: Setup if: github.ref_name == 'main' runs-on: ubuntu-24.04 permissions: contents: read 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-24.04 needs: setup permissions: contents: write id-token: write steps: - name: Log in to Azure uses: bitwarden/gh-actions/azure-login@main with: subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} tenant_id: ${{ secrets.AZURE_TENANT_ID }} client_id: ${{ secrets.AZURE_CLIENT_ID }} - name: Get Azure Key Vault secrets id: get-kv-secrets uses: bitwarden/gh-actions/get-keyvault-secrets@main with: keyvault: gh-org-bitwarden secrets: "BW-GHAPP-ID,BW-GHAPP-KEY" - name: Log out from Azure uses: bitwarden/gh-actions/azure-logout@main - name: Generate GH App token uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 id: app-token with: app-id: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-ID }} private-key: ${{ steps.get-kv-secrets.outputs.BW-GHAPP-KEY }} - name: Checkout Branch uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: main token: ${{ steps.app-token.outputs.token }} - name: Configure Git run: | git config --local user.email "actions@github.com" git config --local user.name "Github Actions" - 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' }} run: git push