diff --git a/.github/actions/android-app-setup/action.yml b/.github/actions/android-app-setup/action.yml new file mode 100644 index 0000000..ccafb2a --- /dev/null +++ b/.github/actions/android-app-setup/action.yml @@ -0,0 +1,65 @@ +name: Setup Android App Build +description: Extended setup for Android app build jobs. + +inputs: + checkout-token: + description: 'Token used for checkout.' + required: true + use-git-lfs: + description: 'Use git lfs during repository checkout.' + required: true + jdk: + description: 'The JDK version to use.' + required: true + setup-rust: + description: 'Whether to set up the Rust toolchain.' + required: true + flavor: + description: 'The build flavor. Used to compute flavor_capitalized.' + required: true + app-module: + description: 'The Gradle app module (e.g. "app" or "android:androidApp").' + required: true + +outputs: + flavor_capitalized: + description: 'The flavor name with the first letter capitalized.' + value: ${{ steps.vars.outputs.flavor_capitalized }} + app_module_path: + description: 'The app module path with colons replaced by slashes.' + value: ${{ steps.vars.outputs.app_module_path }} + build_id: + description: 'A random UUID for this build.' + value: ${{ steps.vars.outputs.build_id }} + build_number: + description: 'The GitHub run number.' + value: ${{ steps.vars.outputs.build_number }} + build_batch: + description: 'The GitHub run ID.' + value: ${{ steps.vars.outputs.build_batch }} + +runs: + using: composite + steps: + - name: Setup Android environment + uses: UbiqueInnovation/actions-android/.github/actions/android-base-setup@v2 + with: + checkout-token: ${{ inputs.checkout-token }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: ${{ inputs.setup-rust }} + + - name: Set Build Variables + id: vars + shell: bash + run: | + flavor=${{ inputs.flavor }} + echo "flavor_capitalized=${flavor~}" >> "$GITHUB_OUTPUT" + + appModulePath=${{ inputs.app-module }} + appModulePath=${appModulePath//:/\/} + echo "app_module_path=$appModulePath" >> "$GITHUB_OUTPUT" + + echo "build_id=$(cat /proc/sys/kernel/random/uuid)" >> "$GITHUB_OUTPUT" + echo "build_number=${{ github.run_number }}" >> "$GITHUB_OUTPUT" + echo "build_batch=${{ github.run_id }}" >> "$GITHUB_OUTPUT" diff --git a/.github/actions/android-base-setup/action.yml b/.github/actions/android-base-setup/action.yml new file mode 100644 index 0000000..0e50417 --- /dev/null +++ b/.github/actions/android-base-setup/action.yml @@ -0,0 +1,43 @@ +name: Setup Android Environment +description: > + Base setup for Android CI jobs. Checks out the repository, installs zstd, + sets up a JDK, and optionally sets up the Rust toolchain. + +inputs: + checkout-token: + description: 'Token used for checkout.' + required: true + use-git-lfs: + description: 'Use git lfs during repository checkout.' + required: true + jdk: + description: 'The JDK version to use.' + required: true + setup-rust: + description: 'Whether to set up the Rust toolchain.' + required: true + +runs: + using: composite + steps: + - name: Checkout + uses: actions/checkout@v6.0.2 + with: + token: ${{ inputs.checkout-token }} + submodules: 'recursive' + lfs: ${{ inputs.use-git-lfs }} + fetch-depth: 10 + + - name: Set up JDK + uses: actions/setup-java@v5.2.0 + with: + distribution: 'zulu' + java-version: ${{ inputs.jdk }} + + - name: Install zstd + shell: bash + run: sudo apt-get install -y zstd + + - name: Setup Rust toolchain + if: ${{ inputs.setup-rust == 'true' }} + uses: actions-rust-lang/setup-rust-toolchain@v1.15.4 diff --git a/.github/actions/ssh-setup/action.yml b/.github/actions/ssh-setup/action.yml new file mode 100644 index 0000000..344509f --- /dev/null +++ b/.github/actions/ssh-setup/action.yml @@ -0,0 +1,36 @@ +name: SSH Setup +description: > + Ensures ~/.ssh is a valid directory, loads the given private key via ssh-agent, + and adds the GitHub host key fingerprints to known_hosts. + +inputs: + ssh-private-key: + description: 'The SSH private key to load into the ssh-agent.' + required: true + +runs: + using: composite + steps: + - name: Ensure ~/.ssh is a directory + shell: bash + run: | + if [ -e "$HOME/.ssh" ] && [ ! -d "$HOME/.ssh" ]; then + echo "~/.ssh exists but is not a directory. Deleting it..." + rm -f "$HOME/.ssh" + fi + mkdir -p "$HOME/.ssh" + chmod 700 "$HOME/.ssh" + + - name: Add SSH Key + uses: webfactory/ssh-agent@dc588b651fe13675774614f8e6a936a468676387 + with: + ssh-private-key: ${{ inputs.ssh-private-key }} + + - name: Add GitHub SSH keys to the known_hosts file + shell: bash + run: | + cat >> ~/.ssh/known_hosts <> ~/.ssh/known_hosts <> "$GITHUB_OUTPUT" - - buildBatch=${{ github.run_id }} - echo "build_batch=$buildBatch" >> "$GITHUB_OUTPUT" - - buildId=$(cat /proc/sys/kernel/random/uuid) - echo "build_id=$buildId" >> "$GITHUB_OUTPUT" - - buildNumber=${{ github.run_number }} - echo "build_number=$buildNumber" >> "$GITHUB_OUTPUT" - - - name: write build_id to file - run: echo "${{ steps.vars.outputs.build_id }}" > build_id.txt + - name: Write build_id to file + run: echo "${{ steps.setup.outputs.build_id }}" > build_id.txt - - name: upload build_id as artifact + - name: Upload build_id as artifact uses: actions/upload-artifact@v7.0.1 with: name: ${{ inputs.flavor }}_build_id compression-level: 0 path: ${{ inputs.working-directory }}/build_id.txt - # Setup JDK environment - - name: Set up JDK - uses: actions/setup-java@v5.2.0 - with: - distribution: 'zulu' - java-version: ${{ inputs.jdk }} - - - name: Install zstd - run: sudo apt-get install -y zstd - - # Setup rust Tool Chain - - name: Setup rust Tool Chain - uses: actions-rust-lang/setup-rust-toolchain@v1.15.4 - if: ${{ inputs.setup-rust-tool-chain }} - # Build and upload app to Alpaka - name: Build app + shell: bash run: | if [ -n "${{ inputs.working-directory-suffix }}" ]; then cd "${{ inputs.working-directory-suffix }}" fi - ./gradlew :${{ inputs.app-module }}:clean :${{ inputs.app-module }}:assembleAndPublishToAlpaka${{ steps.vars.outputs.flavor_capitalized }}Release \ + ./gradlew :${{ inputs.app-module }}:clean :${{ inputs.app-module }}:assembleAndPublishToAlpaka${{ steps.setup.outputs.flavor_capitalized }}Release \ ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} \ -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} \ -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} \ -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} \ -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} \ - -Pbuild_batch=${{ steps.vars.outputs.build_batch }} \ - -Pbuild_id=${{ steps.vars.outputs.build_id }} \ - -Pbuild_number=${{ steps.vars.outputs.build_number }} \ + -Pbuild_batch=${{ steps.setup.outputs.build_batch }} \ + -Pbuild_id=${{ steps.setup.outputs.build_id }} \ + -Pbuild_number=${{ steps.setup.outputs.build_number }} \ -Pbranch=${{ inputs.git-branch }} \ -PcommitHash=${{ inputs.git-sha }} \ ${{ secrets.ADDITIONAL_GRADLE_PROPS }} @@ -219,9 +163,8 @@ jobs: # Write Alpaka build info to GitHub job summary - name: Alpaka Build Summary run: | - echo '### Alpaka Build Info' >> $GITHUB_STEP_SUMMARY - echo '| | |' >> $GITHUB_STEP_SUMMARY + echo '| **Alpaka Build Info** | |' >> $GITHUB_STEP_SUMMARY echo '|---|---|' >> $GITHUB_STEP_SUMMARY - echo '| Build Batch | ${{ steps.vars.outputs.build_batch }} |' >> $GITHUB_STEP_SUMMARY - echo '| Build ID | ${{ steps.vars.outputs.build_id }} |' >> $GITHUB_STEP_SUMMARY - echo '| Build Number | ${{ steps.vars.outputs.build_number }} |' >> $GITHUB_STEP_SUMMARY + echo '| Build Batch | ${{ steps.setup.outputs.build_batch }} |' >> $GITHUB_STEP_SUMMARY + echo '| Build ID | ${{ steps.setup.outputs.build_id }} |' >> $GITHUB_STEP_SUMMARY + echo '| Build Number | ${{ steps.setup.outputs.build_number }} |' >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/android_build_store_upload.yml b/.github/workflows/android_build_store_upload.yml index 9ed9c96..e730e56 100644 --- a/.github/workflows/android_build_store_upload.yml +++ b/.github/workflows/android_build_store_upload.yml @@ -11,7 +11,7 @@ on: required: false default: 'app' description: 'The gradle app module (e.g. custom "android:androidApp")' - setup-rust-tool-chain: + setup-rust: required: false default: false type: boolean @@ -63,7 +63,7 @@ on: jobs: build: - name: Build ${{ inputs.flavor }} Flavor + name: Build flavor ${{ inputs.flavor }} runs-on: ${{ fromJSON(inputs.runs-on) }} container: image: cimg/android:${{ inputs.android-image-version }} @@ -74,56 +74,33 @@ jobs: cancel-in-progress: true env: AAB_STAGING_DIR: .tmp/publishing_aab + outputs: + flavor_capitalized: ${{ steps.setup.outputs.flavor_capitalized }} + app_module_path: ${{ steps.setup.outputs.app_module_path }} steps: - # Checkout repository and submodules - - name: Checkout - uses: actions/checkout@v6.0.2 + - name: Setup Android app build environment + id: setup + uses: UbiqueInnovation/actions-android/.github/actions/android-app-setup@v2 with: - token: ${{ secrets.ANDROID_JENKINS_PAT }} - submodules: 'recursive' - lfs: ${{ inputs.use-git-lfs }} - - # Set build variables for reuse in multiple steps - - name: Set Build Variables - id: vars - shell: bash - run: | - flavor=${{ inputs.flavor }} - appModulePath=${{ inputs.app-module }} - appModulePath=${appModulePath//:/\/} - echo "flavor_capitalized=${flavor~}" >> "$GITHUB_OUTPUT" - echo "app_module_path=$appModulePath" >> "$GITHUB_OUTPUT" - - buildId=$(cat /proc/sys/kernel/random/uuid) - echo "build_id=$buildId" >> "$GITHUB_OUTPUT" - buildNumber=${{ github.run_number }} - echo "build_number=$buildNumber" >> "$GITHUB_OUTPUT" - echo "build_batch=release${{ github.run_id }}" >> "$GITHUB_OUTPUT" - - # Setup JDK environment - - name: Set up JDK - uses: actions/setup-java@v5.2.0 - with: - distribution: 'zulu' - java-version: ${{ inputs.jdk }} - - # Setup rust Tool Chain - - name: Setup rust Tool Chain - uses: actions-rust-lang/setup-rust-toolchain@v1.15.4 - if: ${{ inputs.setup-rust-tool-chain }} + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: ${{ inputs.setup-rust }} + flavor: ${{ inputs.flavor }} + app-module: ${{ inputs.app-module }} # Build the app - name: Build app run: | - ./gradlew :${{ inputs.app-module }}:bundle${{ steps.vars.outputs.flavor_capitalized }}ReleaseUpload \ + ./gradlew :${{ inputs.app-module }}:bundle${{ steps.setup.outputs.flavor_capitalized }}ReleaseUpload \ ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} \ -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} \ -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} \ -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} \ -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} \ - -Pbuild_id=${{ steps.vars.outputs.build_id }} \ - -Pbuild_number=${{ steps.vars.outputs.build_number }} \ - -Pbuild_batch=${{ steps.vars.outputs.build_batch }} \ + -Pbuild_id=${{ steps.setup.outputs.build_id }} \ + -Pbuild_number=${{ steps.setup.outputs.build_number }} \ + -Pbuild_batch=release${{ steps.setup.outputs.build_batch }} \ -Pbranch=${{ github.ref_name }} \ -PcommitHash=${{ github.sha }} \ ${{ secrets.ADDITIONAL_GRADLE_PROPS }} @@ -137,9 +114,9 @@ jobs: - name: Stage AAB run: | mkdir -p "$AAB_STAGING_DIR" - cp "${{ steps.vars.outputs.app_module_path }}"/build/outputs/bundle/${{ inputs.flavor }}ReleaseUpload/*.aab "$AAB_STAGING_DIR" + cp "${{ steps.setup.outputs.app_module_path }}"/build/outputs/bundle/${{ inputs.flavor }}ReleaseUpload/*.aab "$AAB_STAGING_DIR" - # Upload the .aab artifact + # Upload the .aab artifact so the upload job (and humans) can download it - name: Save app artifact uses: actions/upload-artifact@v7.0.1 with: @@ -147,10 +124,35 @@ jobs: path: ${{ env.AAB_STAGING_DIR }}/*.aab compression-level: 0 - # Publish the .aab to the play store - - name: Upload app artifact + upload: + name: Upload flavor ${{ inputs.flavor }} to Play Store + needs: build + runs-on: ${{ fromJSON(inputs.runs-on) }} + container: + image: cimg/android:${{ inputs.android-image-version }} + timeout-minutes: 30 + env: + AAB_STAGING_DIR: .tmp/publishing_aab + steps: + - name: Setup Android environment + uses: UbiqueInnovation/actions-android/.github/actions/android-app-setup@v2 + with: + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: false + flavor: ${{ inputs.flavor }} + app-module: ${{ inputs.app-module }} + + - name: Download app bundle + uses: actions/download-artifact@v4 + with: + name: app-bundle + path: ${{ env.AAB_STAGING_DIR }} + + - name: Upload to Play Store run: | - ./gradlew :${{ inputs.app-module }}:publish${{ steps.vars.outputs.flavor_capitalized }}ReleaseUploadBundle \ + ./gradlew :${{ inputs.app-module }}:publish${{ needs.build.outputs.flavor_capitalized }}ReleaseUploadBundle \ ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} \ --artifact-dir "$AAB_STAGING_DIR" \ -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} \ diff --git a/.github/workflows/android_code_quality.yml b/.github/workflows/android_code_quality.yml index 4f8b2a3..2d221c0 100644 --- a/.github/workflows/android_code_quality.yml +++ b/.github/workflows/android_code_quality.yml @@ -40,10 +40,15 @@ on: required: false default: '2026.03.1-ndk' description: The Android image version to use. Default is 2026.03.1-ndk. - setup-rust-tool-chain: + setup-rust: required: false default: false type: boolean + jdk: + type: string + required: false + default: '21' + description: 'The JDK version to use. Default is 21.' use-git-lfs: required: false default: false @@ -61,7 +66,7 @@ on: UBIQUE_POEDITOR_API_KEY: required: true UBIQUE_SONAR_TOKEN: - required: true + required: false ACR_REGISTRY: required: false description: Required if run-coeus is true @@ -88,47 +93,36 @@ jobs: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true steps: - # Checkout repository and submodules - - name: Checkout - uses: actions/checkout@v6.0.2 + - name: Setup Android app build environment + id: setup + uses: UbiqueInnovation/actions-android/.github/actions/android-app-setup@v2 with: - token: ${{ secrets.ANDROID_JENKINS_PAT }} - submodules: 'recursive' - lfs: ${{ inputs.use-git-lfs }} - - # Set build variables for reuse in multiple steps - - name: Set Build Variables - id: vars + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: ${{ inputs.setup-rust }} + flavor: ${{ inputs.flavor }} + app-module: ${{ inputs.app-module }} + + # Set Gradle properties for reuse in multiple steps + - name: Set Gradle Properties + id: gradle shell: bash run: | - export flavor=${{ inputs.flavor }} - appModulePath=${{ inputs.app-module }} - appModulePath=${appModulePath//:/\/} - echo "flavor_capitalized=${flavor~}" >> "$GITHUB_OUTPUT" - echo "app_module_path=$appModulePath" >> "$GITHUB_OUTPUT" - export gradleProps="-PsentryAuthToken=${{ secrets.SENTRY_AUTH_TOKEN }} -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} ${{ secrets.ADDITIONAL_GRADLE_PROPS }}" + gradleProps="-PsentryAuthToken=${{ secrets.SENTRY_AUTH_TOKEN }} -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} ${{ secrets.ADDITIONAL_GRADLE_PROPS }}" echo "gradle_properties=$gradleProps" >> "$GITHUB_OUTPUT" - # Setup JDK environment - - name: Install zstd - run: sudo apt-get install -y zstd - - # Setup rust Tool Chain - - name: Setup rust Tool Chain - uses: actions-rust-lang/setup-rust-toolchain@v1.15.4 - if: ${{ inputs.setup-rust-tool-chain }} - # Run Unit Tests - name: Run Unit Tests id: tests if: ${{ fromJSON(inputs.run-tests) }} - run: ./gradlew :${{ inputs.app-module }}:test${{ steps.vars.outputs.flavor_capitalized }}DebugUnitTest ${{ steps.vars.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon + run: ./gradlew :${{ inputs.app-module }}:test${{ steps.setup.outputs.flavor_capitalized }}DebugUnitTest ${{ steps.gradle.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon # Run Android Lint checks - name: Run Lint id: lint if: ${{ fromJSON(inputs.run-lint) }} - run: ./gradlew :${{ inputs.app-module }}:lint${{ steps.vars.outputs.flavor_capitalized }}Debug ${{ steps.vars.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon + run: ./gradlew :${{ inputs.app-module }}:lint${{ steps.setup.outputs.flavor_capitalized }}Debug ${{ steps.gradle.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon # Run Sonarqube code analysis - name: Run Sonarqube @@ -137,7 +131,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.ANDROID_JENKINS_PAT }} SONAR_TOKEN: ${{ secrets.UBIQUE_SONAR_TOKEN }} - run: ./gradlew :${{ inputs.app-module }}:sonar ${{ steps.vars.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon + run: ./gradlew :${{ inputs.app-module }}:sonar ${{ steps.gradle.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon # Publish test results to pull requests - name: Publish Unit Test Results @@ -145,7 +139,8 @@ jobs: uses: EnricoMi/publish-unit-test-result-action@v2.21.0 with: check_name: 'Unit Test Results' - files: ${{ steps.vars.outputs.app_module_path }}/build/test-results/**/*.xml + files: ${{ steps.setup.outputs.app_module_path }}/build/test-results/**/*.xml + coeus: if: ${{ github.event_name == 'pull_request' && fromJSON(inputs.run-coeus) }} name: Run coeus binary analysis @@ -159,42 +154,39 @@ jobs: group: ${{ github.workflow }}-${{ github.ref }}-coeus cancel-in-progress: true steps: - # Checkout repository and submodules - - name: Checkout - uses: actions/checkout@v6.0.2 + - name: Setup Android app build environment + id: setup + uses: UbiqueInnovation/actions-android/.github/actions/android-app-setup@v2 with: - token: ${{ secrets.ANDROID_JENKINS_PAT }} - submodules: 'recursive' - lfs: ${{ inputs.use-git-lfs }} - - # Set build variables for reuse in multiple steps - - name: Set Build Variables - id: vars + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: ${{ inputs.setup-rust }} + flavor: ${{ inputs.flavor }} + app-module: ${{ inputs.app-module }} + + # Set Gradle properties for reuse in multiple steps + - name: Set Gradle Properties + id: gradle shell: bash run: | - export flavor=${{ inputs.flavor }} - appModulePath=${{ inputs.app-module }} - appModulePath=${appModulePath//:/\/} - echo "flavor_capitalized=${flavor~}" >> "$GITHUB_OUTPUT" - echo "app_module_path=$appModulePath" >> "$GITHUB_OUTPUT" - export gradleProps="-PsentryAuthToken=${{ secrets.SENTRY_AUTH_TOKEN }} -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} ${{ secrets.ADDITIONAL_GRADLE_PROPS }}" + gradleProps="-PsentryAuthToken=${{ secrets.SENTRY_AUTH_TOKEN }} -PubiqueMavenUrl=${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} -PubiqueMavenUser=${{ secrets.UB_ARTIFACTORY_USER }} -PubiqueMavenPass=${{ secrets.UB_ARTIFACTORY_PASSWORD }} -PubiquePoEditorAPIKey=${{ secrets.UBIQUE_POEDITOR_API_KEY }} ${{ secrets.ADDITIONAL_GRADLE_PROPS }}" echo "gradle_properties=$gradleProps" >> "$GITHUB_OUTPUT" - - name: Install zstd - run: sudo apt-get install -y zstd - # Run Coeus - name: Assemble the APK for static code analysis id: coeus-assemble - run: ./gradlew :${{ inputs.app-module }}:assemble${{ steps.vars.outputs.flavor_capitalized }}Release ${{ steps.vars.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon + run: ./gradlew :${{ inputs.app-module }}:assemble${{ steps.setup.outputs.flavor_capitalized }}Release ${{ steps.gradle.outputs.gradle_properties }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} --daemon + - name: Find APK and Mapping id: find-apk shell: bash run: | - export apk=`find $GITHUB_WORKSPACE/${{ steps.vars.outputs.app_module_path }}/build/outputs/apk/ -name '*.apk'` - export mapping=`find $GITHUB_WORKSPACE/${{ steps.vars.outputs.app_module_path }}/build/outputs/mapping/ -name 'mapping.txt' || true` + export apk=`find $GITHUB_WORKSPACE/${{ steps.setup.outputs.app_module_path }}/build/outputs/apk/ -name '*.apk'` + export mapping=`find $GITHUB_WORKSPACE/${{ steps.setup.outputs.app_module_path }}/build/outputs/mapping/ -name 'mapping.txt' || true` echo "apk=${apk//__w/home\/runner\/_work\/}" >> $GITHUB_OUTPUT echo "mapping=${mapping//__w/home\/runner\/_work\/}" >> $GITHUB_OUTPUT + - name: Docker login for Azure registry id: coeus-docker-login uses: azure/docker-login@v2 diff --git a/.github/workflows/android_gradle_task.yml b/.github/workflows/android_gradle_task.yml index dc41882..d1efdfe 100644 --- a/.github/workflows/android_gradle_task.yml +++ b/.github/workflows/android_gradle_task.yml @@ -32,7 +32,15 @@ on: default: false type: boolean description: 'Use git lfs during repository checkout' + jdk: + type: string + required: false + default: '21' + description: 'The JDK version to use. Default is 21.' secrets: + ANDROID_JENKINS_PAT: + required: false + description: 'Optional PAT for checking out private repositories or submodules. Falls back to the default GITHUB_TOKEN if not set.' UB_ARTIFACTORY_URL: required: true UB_ARTIFACTORY_REPO_ANDROID: @@ -56,11 +64,13 @@ jobs: group: ${{ inputs.concurrency-group }} cancel-in-progress: true steps: - - uses: actions/checkout@v6.0.2 + - name: Setup Android environment + uses: UbiqueInnovation/actions-android/.github/actions/android-base-setup@v2 with: - lfs: ${{ inputs.use-git-lfs }} - - name: Install zstd - run: sudo apt-get install -y zstd + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT || github.token }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: 'false' - name: Run Gradle task run: ./gradlew ${{ inputs.task }} ${{ inputs.gradle-args }} ${{ github.run_attempt > 1 && '--stacktrace --info' || '' }} diff --git a/.github/workflows/android_library_artifactory.yml b/.github/workflows/android_library_artifactory.yml index 6e8863b..c1a4422 100644 --- a/.github/workflows/android_library_artifactory.yml +++ b/.github/workflows/android_library_artifactory.yml @@ -28,6 +28,10 @@ on: required: false default: '21' description: The JDK version to use. Default is 21. + setup-rust: + required: false + default: false + type: boolean use-git-lfs: required: false default: false @@ -43,7 +47,6 @@ on: UB_ARTIFACTORY_PASSWORD: required: true - jobs: build: name: Build library @@ -57,20 +60,13 @@ jobs: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true steps: - # Checkout repository and submodules - - name: Checkout - uses: actions/checkout@v6.0.2 - with: - token: ${{ secrets.ANDROID_JENKINS_PAT }} - submodules: 'recursive' - lfs: ${{ inputs.use-git-lfs }} - - # Setup JDK environment - - name: Set up JDK - uses: actions/setup-java@v5.2.0 + - name: Setup Android environment + uses: UbiqueInnovation/actions-android/.github/actions/android-base-setup@v2 with: - distribution: 'zulu' - java-version: ${{ inputs.jdk }} + checkout-token: ${{ secrets.ANDROID_JENKINS_PAT }} + use-git-lfs: ${{ inputs.use-git-lfs }} + jdk: ${{ inputs.jdk }} + setup-rust: ${{ inputs.setup-rust }} # Append version name suffix - name: Append version name suffix