Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/actions/android-app-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down
29 changes: 27 additions & 2 deletions .github/actions/android-base-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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
Comment thread
fbzli marked this conversation as resolved.

runs:
using: composite
Expand All @@ -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
Expand Down
24 changes: 24 additions & 0 deletions .github/actions/gradle-cache-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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
51 changes: 51 additions & 0 deletions .github/actions/maven-proxy-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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|')
Comment thread
fbzli marked this conversation as resolved.
cat > ~/.gradle/init.d/ubique-maven-proxy.gradle << EOF

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wieso Groovy statt Kotlin Script?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proxy kommt eh weider raus, daher hinfällig.

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
Comment thread
fbzli marked this conversation as resolved.
4 changes: 4 additions & 0 deletions .github/workflows/android_build_alpaka_upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/android_build_store_upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/android_code_quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/android_gradle_task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wieso hier nicht secrets.UB_ARTIFACTORY_URL_ANDROID wie bei den anderen Workflows?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

android_gradle_task.yml wird teils für Artifactory-Deployments gebraucht, darum sind die beiden Secrets hier gesplittet. Das maven-proxy-url fliegt aber eh wieder raus, siehe oben.

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' || '' }}
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/android_library_artifactory.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down