generated from bitwarden/template
-
Notifications
You must be signed in to change notification settings - Fork 82
[PM-20288] New workflow to update the sdk #1877
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 4 commits
Commits
Show all changes
26 commits
Select commit
Hold shift + click to select a range
c9c5c11
Add script to update bitwarden sdk revision value
LRNcardozoWDF 4eeb9cd
Merge branch 'main' into cmcg/sdk-update-new-workflow
LRNcardozoWDF a0a47fe
Add workflow to update sdk version
LRNcardozoWDF ee73781
Change folder name and replaced sed by yq
LRNcardozoWDF 252d3c2
Move bot name to env var
vvolkgang fc046d9
Set token permissions
vvolkgang 45000e4
Fix switch to branch step
vvolkgang 0106366
Get current SDK version from main
vvolkgang 2fa3756
Prevent updating branch when devs are fixing breaking changes
vvolkgang 2eff15d
Add script to fetch repo changelogs
vvolkgang 5e06248
Merge branch 'main' into cmcg/sdk-update-new-workflow
vvolkgang 6d93319
Update project-common.yml instead of app specific files
vvolkgang bef4fb5
Remove sdk-package, not used on iOS
vvolkgang c0e0734
Add inputs for git refs
vvolkgang d12b2a8
Implement get current sdk refs (both from sdk-swift and sdk-internal)
vvolkgang 184b083
Update commit message
vvolkgang 8171d14
Use sdk-swift-ref on update-sdk script
vvolkgang 30d39a6
Implement create or update PR
vvolkgang e7ef69b
update sdk script sets sdk version as a comment now
vvolkgang f6a693a
Refactor log messages
vvolkgang 2cba47f
Fix script path
vvolkgang a6ee6a0
Remove sdk-internal-ref input, fetch it from sdk-version instead
vvolkgang efc6300
Use short commit hash for commit message and PR title
vvolkgang 20bd3c5
Remove commented test job code
vvolkgang 854f391
Update defaults
vvolkgang f237082
Detect downgrades
vvolkgang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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,165 @@ | ||
| name: SDLC / SDK Update | ||
| run-name: "SDK ${{inputs.run-mode == 'Update' && format('Update - {0}', inputs.sdk-version) || format('Test #{0} - {1}', inputs.pr-id, inputs.sdk-version)}}" | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| run-mode: | ||
| description: "Run Mode" | ||
| type: choice | ||
| options: | ||
| - Test # used for testing sdk-internal repo PRs | ||
| - Update # opens a PR in this repo updating the SDK | ||
| default: Test | ||
| # | ||
| sdk-package: | ||
| description: "SDK Package ID" | ||
| required: true | ||
| default: "BitwardenSdk" | ||
| sdk-version: | ||
| description: "SDK Version" | ||
| required: true | ||
| default: "2a6609428275c758fcda5383bfb6b3166ec29eda" | ||
| pr-id: | ||
| description: "Pull Request ID" | ||
|
|
||
| jobs: | ||
| update: | ||
| name: Update and PR | ||
| if: ${{ inputs.run-mode == 'Update' }} | ||
| runs-on: ubuntu-24.04 | ||
| permissions: | ||
| 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@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1 | ||
| 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: Check out repo | ||
| uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 | ||
| with: | ||
| token: ${{ steps.app-token.outputs.token }} | ||
|
|
||
| - name: Log inputs to job summary | ||
| uses: ./.github/actions/log-inputs | ||
| with: | ||
| inputs: ${{ toJson(inputs) }} | ||
|
|
||
| - name: Switch to branch | ||
| id: switch-branch | ||
| run: | | ||
| BRANCH_NAME="sdlc/sdk-update" | ||
| echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT | ||
| git switch -c $BRANCH_NAME | ||
|
|
||
| - name: Get current SDK version | ||
| id: get-current-sdk | ||
| run: | | ||
| SDK_VERSION=$(awk '/BitwardenSdk:/,/^ [A-Za-z]/ { if ($1 == "revision:") print $2 }' project-bwa.yml) | ||
| GIT_REF=$(echo "$SDK_VERSION" | cut -d'-' -f3-) # handles both commit hashes and branch names | ||
| echo "Current SDK version: $SDK_VERSION" | ||
| echo "Current SDK git ref: $GIT_REF" | ||
| echo "version=$SDK_VERSION" >> $GITHUB_OUTPUT | ||
| echo "git_ref=$GIT_REF" >> $GITHUB_OUTPUT | ||
|
|
||
| - name: Update SDK Version | ||
| env: | ||
| _SDK_PACKAGE: ${{ inputs.sdk-package }} | ||
| _SDK_VERSION: ${{ inputs.sdk-version }} | ||
| run: | | ||
| ./Scripts/update-sdk-version.sh "$_SDK_PACKAGE" "$_SDK_VERSION" | ||
|
|
||
| - name: Create branch and commit | ||
| env: | ||
| _SDK_PACKAGE: ${{ inputs.sdk-package }} | ||
| _SDK_VERSION: ${{ inputs.sdk-version }} | ||
| _BRANCH_NAME: ${{ steps.switch-branch.outputs.branch_name }} | ||
| run: | | ||
| echo "๐ Committing SDK version update..." | ||
|
|
||
| git config user.name "bw-ghapp[bot]" | ||
| git config user.email "178206702+bw-ghapp[bot]@users.noreply.github.com" | ||
|
|
||
| git add project-bwa.yml project-bwk.yml project-pm.yml | ||
| git commit -m "SDK Update - $_SDK_PACKAGE $_SDK_VERSION" | ||
| git push origin $_BRANCH_NAME | ||
|
|
||
| - name: Create Pull Request | ||
| env: | ||
| GH_TOKEN: ${{ steps.app-token.outputs.token }} | ||
| _BRANCH_NAME: ${{ steps.switch-branch.outputs.branch_name }} | ||
| _SDK_PACKAGE: ${{ inputs.sdk-package }} | ||
| _SDK_VERSION: ${{ inputs.sdk-version }} | ||
| _OLD_SDK_VERSION: ${{ steps.get-current-sdk.outputs.version }} | ||
| _OLD_SDK_GIT_REF: ${{ steps.get-current-sdk.outputs.git_ref }} | ||
| run: | | ||
| NEW_SDK_GIT_REF=$(echo "$_SDK_VERSION" | cut -d'-' -f3-) | ||
| PR_BODY="Updates the SDK version from \`$_OLD_SDK_VERSION\` to \`$_SDK_PACKAGE $_SDK_VERSION\` | ||
|
|
||
| ## What's Changed" | ||
|
|
||
| # Use echo -e to interpret escape sequences and pipe to gh pr create | ||
| PR_URL=$(echo -e "$PR_BODY" | gh pr create \ | ||
| --title "Update SDK to $_SDK_VERSION" \ | ||
| --body-file - \ | ||
| --base main \ | ||
| --head $_BRANCH_NAME \ | ||
| --label "automated-pr" \ | ||
| --label "t:ci") | ||
|
|
||
| echo "๐ Created PR: $PR_URL" | ||
| echo "## ๐ Created PR: $PR_URL" >> $GITHUB_STEP_SUMMARY | ||
|
|
||
| # test: | ||
| # name: Test Update | ||
| # if: ${{ inputs.run-mode == 'Test' }} | ||
| # runs-on: ubuntu-24.04 | ||
| # permissions: | ||
| # contents: read | ||
| # packages: read | ||
| # | ||
| # steps: | ||
| # - name: Check out repo | ||
| # uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 | ||
| # | ||
| # - name: Log inputs to job summary | ||
| # uses: ./.github/actions/log-inputs | ||
| # with: | ||
| # inputs: ${{ toJson(inputs) }} | ||
| # | ||
| # - name: Setup Android Build | ||
| # uses: ./.github/actions/setup-android-build | ||
| # | ||
| # - name: Update SDK Version | ||
| # env: | ||
| # _SDK_PACKAGE: ${{ inputs.sdk-package }} | ||
| # _SDK_VERSION: ${{ inputs.sdk-version }} | ||
| # run: | | ||
| # ./scripts/update-sdk-version.sh "$_SDK_PACKAGE" "$_SDK_VERSION"0 | ||
| # | ||
| # - name: Build | ||
| # env: | ||
| # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Used in settings.gradle.kts to download the SDK from GitHub Maven Packages | ||
| # run: | | ||
| # ./gradlew assembleDebug --warn | ||
This file contains hidden or 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
This file contains hidden or 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,32 @@ | ||
| #!/bin/bash | ||
|
|
||
| # Script to update SDK version in project-bwa.yml, project-bwk.yml and project-pm.yml | ||
| # Usage: ./Scripts/update-sdk-version.sh <sdk-package> <sdk-version> | ||
| # ./Scripts/update-sdk-version.sh BitwardenSdk 2a6609428275c758fcda5383bfb6b3166ec29eda | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| if [ $# -lt 2 ]; then | ||
| echo "Usage: $0 <sdk-package> <sdk-version>" | ||
| echo "Example: $0 BitwardenSdk 2a6609428275c758fcda5383bfb6b3166ec29eda" | ||
| exit 1 | ||
| fi | ||
|
|
||
| SDK_PACKAGE="$1" | ||
| SDK_VERSION="$2" | ||
| FILES=( | ||
| "project-bwa.yml" | ||
| "project-bwk.yml" | ||
| "project-pm.yml" | ||
vvolkgang marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ) | ||
|
|
||
| for file in "${FILES[@]}"; do | ||
| if [[ -f "$file" ]]; then | ||
| echo "๐ง Updating revision in $file..." | ||
| yq -i ".packages[\"$SDK_PACKAGE\"].revision = \"$SDK_VERSION\"" "$file" | ||
| echo "โ Updated revision line:" | ||
| grep "revision:" "$file" | ||
| else | ||
| echo "โ ๏ธ Skipping missing file: $file" | ||
| fi | ||
| done | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.