From 7a978205a1cf9d223eec7ae52e6c5062d24606e1 Mon Sep 17 00:00:00 2001 From: Florian Buenzli Date: Tue, 12 May 2026 16:34:41 +0200 Subject: [PATCH] added maven proxy and gradle cache --- .github/actions/android-app-setup/action.yml | 16 ++++++ .github/actions/android-base-setup/action.yml | 29 ++++++++++- .github/actions/gradle-cache-setup/action.yml | 24 +++++++++ .github/actions/maven-proxy-setup/action.yml | 51 +++++++++++++++++++ .../workflows/android_build_alpaka_upload.yml | 4 ++ .../workflows/android_build_store_upload.yml | 8 +++ .github/workflows/android_code_quality.yml | 8 +++ .github/workflows/android_gradle_task.yml | 4 ++ .../workflows/android_library_artifactory.yml | 4 ++ 9 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 .github/actions/gradle-cache-setup/action.yml create mode 100644 .github/actions/maven-proxy-setup/action.yml diff --git a/.github/actions/android-app-setup/action.yml b/.github/actions/android-app-setup/action.yml index ccafb2a..ac639c1 100644 --- a/.github/actions/android-app-setup/action.yml +++ b/.github/actions/android-app-setup/action.yml @@ -20,6 +20,18 @@ inputs: app-module: description: 'The Gradle app module (e.g. "app" or "android:androidApp").' required: true + maven-proxy-url: + description: 'Artifactory URL (with /android suffix) for the Maven proxy.' + required: true + maven-proxy-username: + description: 'Artifactory username for Maven proxy authentication.' + required: true + maven-proxy-password: + description: 'Artifactory password for Maven proxy authentication.' + required: true + gradle-cache-job-id: + description: 'Job ID for Gradle cache scoping (e.g. JDK version + module).' + required: true outputs: flavor_capitalized: @@ -48,6 +60,10 @@ runs: use-git-lfs: ${{ inputs.use-git-lfs }} jdk: ${{ inputs.jdk }} setup-rust: ${{ inputs.setup-rust }} + maven-proxy-url: ${{ inputs.maven-proxy-url }} + maven-proxy-username: ${{ inputs.maven-proxy-username }} + maven-proxy-password: ${{ inputs.maven-proxy-password }} + gradle-cache-job-id: ${{ inputs.gradle-cache-job-id }} - name: Set Build Variables id: vars diff --git a/.github/actions/android-base-setup/action.yml b/.github/actions/android-base-setup/action.yml index 0e50417..95c1676 100644 --- a/.github/actions/android-base-setup/action.yml +++ b/.github/actions/android-base-setup/action.yml @@ -1,7 +1,8 @@ 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. + Base setup for Android CI jobs. Checks out the repository, sets up a JDK, + configures the Maven proxy, sets up the Gradle cache, installs zstd, + and optionally sets up the Rust toolchain. inputs: checkout-token: @@ -16,6 +17,18 @@ inputs: setup-rust: description: 'Whether to set up the Rust toolchain.' required: true + maven-proxy-url: + description: 'Artifactory URL (with /android suffix) for the Maven proxy.' + required: true + maven-proxy-username: + description: 'Artifactory username for Maven proxy authentication.' + required: true + maven-proxy-password: + description: 'Artifactory password for Maven proxy authentication.' + required: true + gradle-cache-job-id: + description: 'Job ID for Gradle cache scoping (e.g. JDK version + module).' + required: true runs: using: composite @@ -34,6 +47,18 @@ runs: distribution: 'zulu' java-version: ${{ inputs.jdk }} + - name: Setup Maven Proxy + uses: UbiqueInnovation/actions-android/.github/actions/maven-proxy-setup@v2 + with: + maven-proxy-url: ${{ inputs.maven-proxy-url }} + maven-proxy-username: ${{ inputs.maven-proxy-username }} + maven-proxy-password: ${{ inputs.maven-proxy-password }} + + - name: Setup Gradle Cache + uses: UbiqueInnovation/actions-android/.github/actions/gradle-cache-setup@v2 + with: + job-id: ${{ inputs.gradle-cache-job-id }} + - name: Install zstd shell: bash run: sudo apt-get install -y zstd diff --git a/.github/actions/gradle-cache-setup/action.yml b/.github/actions/gradle-cache-setup/action.yml new file mode 100644 index 0000000..a799689 --- /dev/null +++ b/.github/actions/gradle-cache-setup/action.yml @@ -0,0 +1,24 @@ +name: Setup Gradle Cache +description: Configures burrunan/gradle-cache-action for caching Gradle dependencies + +inputs: + job-id: + description: Job ID for cache scoping (e.g. JDK version) + required: true + +runs: + using: composite + steps: + - name: Gradle Cache + uses: burrunan/gradle-cache-action@v3 + with: + job-id: ${{ inputs.job-id }} + gradle-dependencies-cache-key: | + **/*.gradle* + **/gradle-wrapper.properties + **/libs.versions.toml + save-gradle-dependencies-cache: true + save-maven-dependencies-cache: false + save-local-build-cache: false + concurrent: true + gradle-distribution-sha-256-sum-warning: false diff --git a/.github/actions/maven-proxy-setup/action.yml b/.github/actions/maven-proxy-setup/action.yml new file mode 100644 index 0000000..4fdf04a --- /dev/null +++ b/.github/actions/maven-proxy-setup/action.yml @@ -0,0 +1,51 @@ +name: Setup Ubique Maven Proxy +description: Installs a Gradle init script that adds the Ubique public Maven proxy to all projects and plugins + +inputs: + maven-proxy-url: + description: Artifactory URL (with /android suffix, which will be replaced with /remote-merged-maven) + required: true + maven-proxy-username: + description: Artifactory username for Maven proxy authentication + required: true + maven-proxy-password: + description: Artifactory password for Maven proxy authentication + required: true + +runs: + using: composite + steps: + - name: Install Gradle init script for Maven proxy + if: ${{ inputs.maven-proxy-url != '' && inputs.maven-proxy-username != '' && inputs.maven-proxy-password != '' }} + shell: bash + env: + ARTIFACTORY_URL: ${{ inputs.maven-proxy-url }} + ARTIFACTORY_USERNAME: ${{ inputs.maven-proxy-username }} + ARTIFACTORY_PASSWORD: ${{ inputs.maven-proxy-password }} + run: | + mkdir -p ~/.gradle/init.d + PROXY_URL=$(echo "$ARTIFACTORY_URL" | sed 's|/android|/remote-merged-maven|') + cat > ~/.gradle/init.d/ubique-maven-proxy.gradle << EOF + def proxy = { repo -> + repo.maven { + url = "${PROXY_URL}" + credentials { + username = '${ARTIFACTORY_USERNAME}' + password = '${ARTIFACTORY_PASSWORD}' + } + authentication { + basic(BasicAuthentication) + digest(DigestAuthentication) + } + } + } + beforeSettings { settings -> + settings.pluginManagement { + repositories { proxy(delegate) } + } + settings.dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) + repositories { proxy(delegate) } + } + } + EOF diff --git a/.github/workflows/android_build_alpaka_upload.yml b/.github/workflows/android_build_alpaka_upload.yml index 1ea37e6..296877d 100644 --- a/.github/workflows/android_build_alpaka_upload.yml +++ b/.github/workflows/android_build_alpaka_upload.yml @@ -113,6 +113,10 @@ jobs: setup-rust: ${{ inputs.setup-rust }} flavor: ${{ inputs.flavor }} app-module: ${{ inputs.app-module }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.app-module }}' - name: Setup SSH env: diff --git a/.github/workflows/android_build_store_upload.yml b/.github/workflows/android_build_store_upload.yml index e730e56..2d056a8 100644 --- a/.github/workflows/android_build_store_upload.yml +++ b/.github/workflows/android_build_store_upload.yml @@ -88,6 +88,10 @@ jobs: setup-rust: ${{ inputs.setup-rust }} flavor: ${{ inputs.flavor }} app-module: ${{ inputs.app-module }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.app-module }}' # Build the app - name: Build app @@ -143,6 +147,10 @@ jobs: setup-rust: false flavor: ${{ inputs.flavor }} app-module: ${{ inputs.app-module }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.app-module }}' - name: Download app bundle uses: actions/download-artifact@v4 diff --git a/.github/workflows/android_code_quality.yml b/.github/workflows/android_code_quality.yml index 2d221c0..ced1b4d 100644 --- a/.github/workflows/android_code_quality.yml +++ b/.github/workflows/android_code_quality.yml @@ -103,6 +103,10 @@ jobs: setup-rust: ${{ inputs.setup-rust }} flavor: ${{ inputs.flavor }} app-module: ${{ inputs.app-module }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.app-module }}' # Set Gradle properties for reuse in multiple steps - name: Set Gradle Properties @@ -164,6 +168,10 @@ jobs: setup-rust: ${{ inputs.setup-rust }} flavor: ${{ inputs.flavor }} app-module: ${{ inputs.app-module }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.app-module }}' # Set Gradle properties for reuse in multiple steps - name: Set Gradle Properties diff --git a/.github/workflows/android_gradle_task.yml b/.github/workflows/android_gradle_task.yml index d1efdfe..0489924 100644 --- a/.github/workflows/android_gradle_task.yml +++ b/.github/workflows/android_gradle_task.yml @@ -71,6 +71,10 @@ jobs: use-git-lfs: ${{ inputs.use-git-lfs }} jdk: ${{ inputs.jdk }} setup-rust: 'false' + maven-proxy-url: '${{ secrets.UB_ARTIFACTORY_URL }}${{ secrets.UB_ARTIFACTORY_REPO_ANDROID }}' + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.task }}' - 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 c1a4422..5105504 100644 --- a/.github/workflows/android_library_artifactory.yml +++ b/.github/workflows/android_library_artifactory.yml @@ -67,6 +67,10 @@ jobs: use-git-lfs: ${{ inputs.use-git-lfs }} jdk: ${{ inputs.jdk }} setup-rust: ${{ inputs.setup-rust }} + maven-proxy-url: ${{ secrets.UB_ARTIFACTORY_URL_ANDROID }} + maven-proxy-username: ${{ secrets.UB_ARTIFACTORY_USER }} + maven-proxy-password: ${{ secrets.UB_ARTIFACTORY_PASSWORD }} + gradle-cache-job-id: '${{ inputs.jdk }}-${{ inputs.lib-module }}' # Append version name suffix - name: Append version name suffix