From 228d2e6ae7d1f95e82b2e86f0b70a500ac58c1bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 21 Aug 2025 22:02:51 +0100 Subject: [PATCH 1/9] Update job / step restrictions --- .github/workflows/build-android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 712a6591f..73978ab51 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -135,7 +135,6 @@ jobs: update: name: Trigger SDK update in Android repo runs-on: ubuntu-24.04 - if: (github.ref == 'refs/heads/main' && github.event_name == 'push') || inputs.update-android-repo needs: combine permissions: id-token: write @@ -168,7 +167,8 @@ jobs: repositories: android permission-actions: write - - name: Call SDLC SDK Update workflow in Android repo + - name: Trigger SDK Update in Android repo + if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || inputs.update-android-repo env: GH_TOKEN: ${{ steps.app-token.outputs.token }} _SDK_PACKAGE: ${{ needs.combine.outputs.sdk-package-id }} From b96fdbf23b65e0c01186c2f291faa65db05f177b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 21 Aug 2025 22:03:05 +0100 Subject: [PATCH 2/9] Add test input --- .github/workflows/build-android.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 73978ab51..b27740cea 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -11,6 +11,10 @@ on: description: "Update Android Repo - Opens a PR updating the SDK in bitwarden/android" type: boolean default: false + test-android-repo: + description: "Test Android Repo Apps - Runs the SDK Test workflow in bitwarden/android" + type: boolean + default: false defaults: run: From 46e36c63deb1a8dc22b6b76407a9c130258eac15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 21 Aug 2025 22:05:53 +0100 Subject: [PATCH 3/9] Implement trigger SDK Test workflow --- .github/workflows/build-android.yml | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index b27740cea..2830b6e81 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -180,3 +180,58 @@ jobs: run: | echo "🚀 Triggering sdlc-sdk-update.yml workflow in bitwarden/android repo..." gh workflow run sdlc-sdk-update.yml --repo bitwarden/android --ref main -f run-mode=Update -f sdk-package=$_SDK_PACKAGE -f sdk-version=$_SDK_VERSION + + - name: Trigger SDK Test in Android repo and wait for completion + if: github.event_name == 'pull_request' || inputs.test-android-repo + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + _SDK_PACKAGE: ${{ needs.combine.outputs.sdk-package-id }} + _SDK_VERSION: ${{ needs.combine.outputs.sdk-version }} + _PR_NUMBER: ${{ github.event.pull_request.number }} + _MAX_RUN_LIST_RETRIES: 5 + _BREAKING_CHANGE_LABEL: "breaking-change-android" + run: | + echo "🚀 Triggering sdlc-sdk-update.yml workflow in bitwarden/android repo..." + json_params='{"run-mode": "Test", "sdk-package": "'"$_SDK_PACKAGE"'", "sdk-version": "'"$_SDK_VERSION"'", "pr-id": "'"$_PR_NUMBER"'"}' + echo $json_params | gh workflow run sdlc-sdk-update.yml --repo bitwarden/android --json + + echo "🔍 Looking for workflow run with displayTitle containing 'Test' and '$_SDK_VERSION'..." + JQ_FILTER='.[] | select(.status != "completed" and (.displayTitle | contains("Test")) and (.displayTitle | contains("'"$_SDK_VERSION"'"))) | .databaseId' + + RETRY_COUNT=0 + WORKFLOW_RUN_ID="" + while + sleep 5 + RETRY_COUNT=$((RETRY_COUNT + 1)) + echo "🔄 Attempt $RETRY_COUNT of $_MAX_RUN_LIST_RETRIES to find workflow run..." + WORKFLOW_RUN_ID=$(gh run list --repo bitwarden/android --workflow=sdlc-sdk-update.yml --limit=10 --json databaseId,status,displayTitle --jq "$JQ_FILTER" | head -1) + [ -z "$WORKFLOW_RUN_ID" ] && [ $RETRY_COUNT -lt $_MAX_RUN_LIST_RETRIES ] + do true; done + + if [ -z "$WORKFLOW_RUN_ID" ]; then + echo "::error::No workflow found after $_MAX_RUN_LIST_RETRIES attempts." + exit 1 + fi + + echo "🔍 Workflow run ID: $WORKFLOW_RUN_ID" + + WORKFLOW_URL="https://github.com/bitwarden/android/actions/runs/$WORKFLOW_RUN_ID" + echo "## 🔗 Android SDK Test Run: [$WORKFLOW_RUN_ID]($WORKFLOW_URL)" >> $GITHUB_STEP_SUMMARY + + ERROR_CODE=0 + if ! gh run watch $WORKFLOW_RUN_ID --repo bitwarden/android --compact --exit-status --interval 30; then + echo "❌ Android SDK Test failed." + echo "❌ **Status:** Failed - [View Details]($WORKFLOW_URL)" >> $GITHUB_STEP_SUMMARY + LABEL_ACTION="--add-label" + ERROR_CODE=1 + else + echo "✅ Android SDK Test passed." + echo "✅ **Status:** Passed - [View Details]($WORKFLOW_URL)" >> $GITHUB_STEP_SUMMARY + LABEL_ACTION="--remove-label" + fi + + if [ -n "$_PR_NUMBER" ]; then + gh pr edit $_PR_NUMBER $LABEL_ACTION $_BREAKING_CHANGE_LABEL + fi + + exit $ERROR_CODE From cb2db427844fa06c9de95526ca34491fbf6c49fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 21 Aug 2025 22:16:42 +0100 Subject: [PATCH 4/9] Force PR failure --- .github/workflows/build-android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 2830b6e81..0bc3ab41d 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -185,8 +185,8 @@ jobs: if: github.event_name == 'pull_request' || inputs.test-android-repo env: GH_TOKEN: ${{ steps.app-token.outputs.token }} - _SDK_PACKAGE: ${{ needs.combine.outputs.sdk-package-id }} - _SDK_VERSION: ${{ needs.combine.outputs.sdk-version }} + _SDK_PACKAGE: "com.bitwarden:sdk-android" #${{ needs.combine.outputs.sdk-package-id + _SDK_VERSION: "1.0.0-2493-bceb681a" #${{ needs.combine.outputs.sdk-version _PR_NUMBER: ${{ github.event.pull_request.number }} _MAX_RUN_LIST_RETRIES: 5 _BREAKING_CHANGE_LABEL: "breaking-change-android" From 3da0b905011f38b72861eaf70ba7d75c18518cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 21 Aug 2025 23:03:38 +0100 Subject: [PATCH 5/9] Fix gh pr edit failure --- .github/workflows/build-android.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 0bc3ab41d..21c20ce73 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -170,6 +170,7 @@ jobs: owner: bitwarden repositories: android permission-actions: write + permission-pull-requests: write - name: Trigger SDK Update in Android repo if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || inputs.update-android-repo @@ -231,7 +232,7 @@ jobs: fi if [ -n "$_PR_NUMBER" ]; then - gh pr edit $_PR_NUMBER $LABEL_ACTION $_BREAKING_CHANGE_LABEL + gh pr edit --repo bitwarden/sdk-internal $_PR_NUMBER $LABEL_ACTION $_BREAKING_CHANGE_LABEL fi exit $ERROR_CODE From 77c46a3c04b7501def4bc9fdfc5cf0f4141f853f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Fri, 22 Aug 2025 15:26:06 +0100 Subject: [PATCH 6/9] Use GH_TOKEN for PR label --- .github/workflows/build-android.yml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index 21c20ce73..a9fede5d5 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -142,6 +142,7 @@ jobs: needs: combine permissions: id-token: write + pull-requests: write steps: - name: Log in to Azure @@ -170,7 +171,6 @@ jobs: owner: bitwarden repositories: android permission-actions: write - permission-pull-requests: write - name: Trigger SDK Update in Android repo if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || inputs.update-android-repo @@ -183,14 +183,13 @@ jobs: gh workflow run sdlc-sdk-update.yml --repo bitwarden/android --ref main -f run-mode=Update -f sdk-package=$_SDK_PACKAGE -f sdk-version=$_SDK_VERSION - name: Trigger SDK Test in Android repo and wait for completion + id: test-android if: github.event_name == 'pull_request' || inputs.test-android-repo env: GH_TOKEN: ${{ steps.app-token.outputs.token }} _SDK_PACKAGE: "com.bitwarden:sdk-android" #${{ needs.combine.outputs.sdk-package-id _SDK_VERSION: "1.0.0-2493-bceb681a" #${{ needs.combine.outputs.sdk-version - _PR_NUMBER: ${{ github.event.pull_request.number }} _MAX_RUN_LIST_RETRIES: 5 - _BREAKING_CHANGE_LABEL: "breaking-change-android" run: | echo "🚀 Triggering sdlc-sdk-update.yml workflow in bitwarden/android repo..." json_params='{"run-mode": "Test", "sdk-package": "'"$_SDK_PACKAGE"'", "sdk-version": "'"$_SDK_VERSION"'", "pr-id": "'"$_PR_NUMBER"'"}' @@ -231,8 +230,19 @@ jobs: LABEL_ACTION="--remove-label" fi + echo "label-action=$LABEL_ACTION" >> $GITHUB_OUTPUT + echo "error-code=$ERROR_CODE" >> $GITHUB_OUTPUT + + - name: Label PR and exit + if: github.event_name == 'pull_request' || inputs.test-android-repo + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + _LABEL_ACTION: ${{ steps.test-android.outputs.label-action }} + _ERROR_CODE: ${{ steps.test-android.outputs.error-code }} + _PR_NUMBER: ${{ github.event.pull_request.number }} + _BREAKING_CHANGE_LABEL: "breaking-change-android" + run: | if [ -n "$_PR_NUMBER" ]; then - gh pr edit --repo bitwarden/sdk-internal $_PR_NUMBER $LABEL_ACTION $_BREAKING_CHANGE_LABEL + gh pr edit --repo bitwarden/sdk-internal $_PR_NUMBER $_LABEL_ACTION $_BREAKING_CHANGE_LABEL fi - - exit $ERROR_CODE + exit $_ERROR_CODE From 2891a35e42f8dbcbe1afd16c12e08cca315eccde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Mon, 25 Aug 2025 16:26:45 +0100 Subject: [PATCH 7/9] Fix workflow input indentation --- .github/workflows/build-android.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index a9fede5d5..3dd59efd1 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -12,9 +12,9 @@ on: type: boolean default: false test-android-repo: - description: "Test Android Repo Apps - Runs the SDK Test workflow in bitwarden/android" - type: boolean - default: false + description: "Test Android Repo Apps - Runs the SDK Test workflow in bitwarden/android" + type: boolean + default: false defaults: run: From 719da6dfc3738895cd94fcb8f25f8029f95d56fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 16 Oct 2025 22:14:25 +0100 Subject: [PATCH 8/9] Add Breaking Changes section to PR template --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e43ad29df..20a42dde8 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,6 +6,10 @@ +## 🚨 Breaking Changes + + + ## ⏰ Reminders before review - Contributor guidelines followed From 82eb81907d346f3f2a8a65bb3e588d35b0553d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lison=20Fernandes?= Date: Thu, 16 Oct 2025 22:20:34 +0100 Subject: [PATCH 9/9] Remove test code --- .github/workflows/build-android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml index f65591611..8978bc472 100644 --- a/.github/workflows/build-android.yml +++ b/.github/workflows/build-android.yml @@ -187,8 +187,8 @@ jobs: if: github.event_name == 'pull_request' || inputs.test-android-repo env: GH_TOKEN: ${{ steps.app-token.outputs.token }} - _SDK_PACKAGE: "com.bitwarden:sdk-android" #${{ needs.combine.outputs.sdk-package-id - _SDK_VERSION: "1.0.0-2493-bceb681a" #${{ needs.combine.outputs.sdk-version + _SDK_PACKAGE: ${{ needs.combine.outputs.sdk-package-id }} + _SDK_VERSION: ${{ needs.combine.outputs.sdk-version }} _MAX_RUN_LIST_RETRIES: 5 run: | echo "🚀 Triggering sdlc-sdk-update.yml workflow in bitwarden/android repo..."