diff --git a/.github/workflows/flutter-deploy.yml b/.github/workflows/flutter-deploy.yml index 5450051..88af9ea 100644 --- a/.github/workflows/flutter-deploy.yml +++ b/.github/workflows/flutter-deploy.yml @@ -123,15 +123,16 @@ jobs: qbs-maven-password: ${{ secrets.QBS_DEV_MAVEN_PASSWORD }} upload-key: ${{ secrets.UPLOAD_KEY }} obfuscate: ${{ inputs.obfuscate }} - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: android-apk + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.publish-android.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.publish-android.outputs.artifact-dart-obfuscation-map-file-path }} proguard-mapping-file-path: ${{ inputs.working-directory }}/build/app/outputs/mapping/release/mapping.txt @@ -168,15 +169,16 @@ jobs: build-arguments: ${{ inputs.ios-build-arguments }} obfuscate: ${{ inputs.obfuscate }} continue-on-error: true - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: ios + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.publish-ios.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.publish-ios.outputs.artifact-dart-obfuscation-map-file-path }} dsyms-path: ${{ steps.publish-ios.outputs.artifact-dsyms-path }} @@ -218,15 +220,16 @@ jobs: build-arguments: ${{ inputs.android-build-arguments }} working-directory: ${{ inputs.working-directory }} obfuscate: ${{ inputs.obfuscate }} - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: android-aab + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.flutter-build.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.flutter-build.outputs.artifact-dart-obfuscation-map-file-path }} proguard-mapping-file-path: ${{ inputs.working-directory }}/build/app/outputs/mapping/release/mapping.txt @@ -240,6 +243,57 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} name-suffix: ${{ needs.android-name-suffix-generation.outputs.name-suffix }} artifact-path: ${{ steps.flutter-build.outputs.artifact-path }} + + upload-sentry: + name: Upload debug symbols to Sentry + runs-on: default-k8s-runner + needs: [generate-build-number, android-publish, ios-publish, android-bundle] + if: ${{ !cancelled() && (needs.android-publish.result == 'success' || needs.ios-publish.result == 'success' || needs.android-bundle.result == 'success') }} + steps: + - name: Check Sentry configuration + id: sentry + env: + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + run: | + if [[ -z "$SENTRY_PROJECT" ]]; then + echo "::notice::No SENTRY_PROJECT secret set - nothing to upload" + echo "configured=false" >> $GITHUB_OUTPUT + else + echo "configured=true" >> $GITHUB_OUTPUT + fi + - uses: QuickBirdEng/actions/checkout-ssh@feat/sentry-symbols-separate-job + if: ${{ steps.sentry.outputs.configured == 'true' }} + with: + ssh-private-key: ${{ secrets.CI_SSH_PRIVATE_KEY_FOR_GITHUB_PRIVATE_REPOS }} + fetch-depth: 0 + - name: Restore debug symbols + id: symbols + if: ${{ steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/restore-debug-symbols@feat/sentry-symbols-separate-job + with: + build-number: ${{ needs.generate-build-number.outputs.build-number }} + platforms: ios android-apk android-aab + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} + - name: Upload debug symbols to Sentry + if: ${{ steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@feat/sentry-symbols-separate-job + with: + url: ${{ secrets.SENTRY_URL }} + organization: ${{ secrets.SENTRY_ORG }} + project: ${{ secrets.SENTRY_PROJECT }} + auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + symbols-dir: ${{ steps.symbols.outputs.symbols-dir }} + release: ${{ steps.symbols.outputs.release }} + - name: Delete the stored debug symbols + if: ${{ success() && steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/delete-debug-symbols@feat/sentry-symbols-separate-job + with: + build-number: ${{ needs.generate-build-number.outputs.build-number }} + platforms: ios android-apk android-aab + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} + dependency-reports: if: ${{ inputs.dependency-reports }} uses: QuickBirdEng/workflows/.github/workflows/vulnerability-and-outdated-packages-report.yml@main diff --git a/.github/workflows/flutter-release.yml b/.github/workflows/flutter-release.yml index 9aa5d2a..d19a394 100644 --- a/.github/workflows/flutter-release.yml +++ b/.github/workflows/flutter-release.yml @@ -189,15 +189,16 @@ jobs: qbs-maven-password: ${{ secrets.QBS_DEV_MAVEN_PASSWORD }} upload-key: ${{ secrets.UPLOAD_KEY }} obfuscate: ${{ inputs.obfuscate }} - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: android-apk + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.publish-android.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.publish-android.outputs.artifact-dart-obfuscation-map-file-path }} proguard-mapping-file-path: ${{ inputs.working-directory }}/build/app/outputs/mapping/release/mapping.txt @@ -233,15 +234,16 @@ jobs: submit-for-review: ${{ inputs.submit-ios-build-for-review }} build-arguments: ${{ inputs.ios-build-arguments }} obfuscate: ${{ inputs.obfuscate }} - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: ios + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.publish-ios.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.publish-ios.outputs.artifact-dart-obfuscation-map-file-path }} dsyms-path: ${{ steps.publish-ios.outputs.artifact-dsyms-path }} @@ -284,15 +286,16 @@ jobs: build-arguments: ${{ inputs.android-build-arguments }} working-directory: ${{ inputs.working-directory }} obfuscate: ${{ inputs.obfuscate }} - - uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@main + - name: Store debug symbols for Sentry + uses: QuickBirdEng/actions/store-debug-symbols@feat/sentry-symbols-separate-job env: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} if: ${{ env.SENTRY_PROJECT != '' }} with: - url: ${{ secrets.SENTRY_URL }} - organization: ${{ secrets.SENTRY_ORG }} - project: ${{ secrets.SENTRY_PROJECT }} - auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + platform: android-aab + build-number: ${{ needs.generate-build-number.outputs.build-number }} + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} dart-symbols-file-path: ${{ steps.flutter-build.outputs.artifact-dart-symbols-file-path }} dart-obfuscation-map-file-path: ${{ steps.flutter-build.outputs.artifact-dart-obfuscation-map-file-path }} proguard-mapping-file-path: ${{ inputs.working-directory }}/build/app/outputs/mapping/release/mapping.txt @@ -306,6 +309,57 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} name-suffix: ${{ needs.android-name-suffix-generation.outputs.name-suffix }} artifact-path: ${{ steps.flutter-build.outputs.artifact-path }} + + upload-sentry: + name: Upload debug symbols to Sentry + runs-on: default-k8s-runner + needs: [generate-build-number, android-publish, ios-publish, android-bundle] + if: ${{ !cancelled() && (needs.android-publish.result == 'success' || needs.ios-publish.result == 'success' || needs.android-bundle.result == 'success') }} + steps: + - name: Check Sentry configuration + id: sentry + env: + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + run: | + if [[ -z "$SENTRY_PROJECT" ]]; then + echo "::notice::No SENTRY_PROJECT secret set - nothing to upload" + echo "configured=false" >> $GITHUB_OUTPUT + else + echo "configured=true" >> $GITHUB_OUTPUT + fi + - uses: QuickBirdEng/actions/checkout-ssh@feat/sentry-symbols-separate-job + if: ${{ steps.sentry.outputs.configured == 'true' }} + with: + ssh-private-key: ${{ secrets.CI_SSH_PRIVATE_KEY_FOR_GITHUB_PRIVATE_REPOS }} + fetch-depth: 0 + - name: Restore debug symbols + id: symbols + if: ${{ steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/restore-debug-symbols@feat/sentry-symbols-separate-job + with: + build-number: ${{ needs.generate-build-number.outputs.build-number }} + platforms: ios android-apk android-aab + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} + - name: Upload debug symbols to Sentry + if: ${{ steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/upload-debug-symbols-to-sentry@feat/sentry-symbols-separate-job + with: + url: ${{ secrets.SENTRY_URL }} + organization: ${{ secrets.SENTRY_ORG }} + project: ${{ secrets.SENTRY_PROJECT }} + auth-token: ${{ secrets.SENTRY_AUTH_TOKEN }} + symbols-dir: ${{ steps.symbols.outputs.symbols-dir }} + release: ${{ steps.symbols.outputs.release }} + - name: Delete the stored debug symbols + if: ${{ success() && steps.sentry.outputs.configured == 'true' }} + uses: QuickBirdEng/actions/delete-debug-symbols@feat/sentry-symbols-separate-job + with: + build-number: ${{ needs.generate-build-number.outputs.build-number }} + platforms: ios android-apk android-aab + access-key: ${{ secrets.DO_ACCESS_KEY }} + secret-key: ${{ secrets.DO_SECRET_KEY }} + dependency-reports: if: ${{ inputs.dependency-reports }} uses: QuickBirdEng/workflows/.github/workflows/vulnerability-and-outdated-packages-report.yml@main