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
65 changes: 65 additions & 0 deletions .github/actions/android-app-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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:
Comment thread
fbzli marked this conversation as resolved.
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:
Comment thread
M-Wong marked this conversation as resolved.
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"
43 changes: 43 additions & 0 deletions .github/actions/android-base-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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
Comment thread
fbzli marked this conversation as resolved.
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

Comment thread
fbzli marked this conversation as resolved.
- 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

@M-Wong M-Wong May 18, 2026

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.

Würds Sinn machen das Prebuild Script als Teil von dieser Action zu haben?

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.

Ja. Und ich habe mir überlegt, das Script nicht als Input zu übergeben, sondern ein fixes File im Client-Repo unter .github/scripts/prebuild.sh oder so zu haben, das ausgeführt wird, wenn's existiert. Evtl ginge auch eine Composite Action, aber das macht Probleme wenn sie nicht existiert, bzw. kann nicht optional sein, soviel ich weiss.

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.

Bin nicht so Fan davon wenn die Action auf ein hardcodiertes Pre-Build Script versucht zu gehen. Lieber das Script als File-Pfad als Input nehmen (statt wie jetzt den effektiven Script Code als Input)

if: ${{ inputs.setup-rust == 'true' }}
uses: actions-rust-lang/setup-rust-toolchain@v1.15.4
36 changes: 36 additions & 0 deletions .github/actions/ssh-setup/action.yml
Original file line number Diff line number Diff line change
@@ -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 <<EOF
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
EOF
109 changes: 26 additions & 83 deletions .github/workflows/android_build_alpaka_upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ on:
default: ''
required: false
description: 'Suffix to the working directory of the script, only used for gradle build. Must end with a slash or be empty.'
setup-rust-tool-chain:
setup-rust:
required: false
default: false
type: boolean
Expand Down Expand Up @@ -90,7 +90,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 }}
Expand All @@ -103,111 +103,55 @@ jobs:
group: ${{ inputs.concurrency-group }}
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 }}
fetch-depth: 10
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 }}
Comment thread
fbzli marked this conversation as resolved.

- name: Ensure ~/.ssh is a directory
- name: Setup SSH
env:
SSH_KEY: ${{ secrets.SSH_KEY }}
if: ${{ env.SSH_KEY != '' }}
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"
echo "Removed ~/.ssh."
else
echo "~/.ssh is either a directory or does not exist. No action needed."
fi

- name: "Add SSH Key"
env:
SSH_KEY: ${{ secrets.SSH_KEY }}
if: ${{ env.SSH_KEY != '' }}
uses: webfactory/ssh-agent@dc588b651fe13675774614f8e6a936a468676387
uses: UbiqueInnovation/actions-android/.github/actions/ssh-setup@v2
with:
ssh-private-key: ${{ secrets.SSH_KEY }}

- name: "Add GitHub SSH keys to the known_hosts file"
env:
SSH_KEY: ${{ secrets.SSH_KEY }}
if: ${{ env.SSH_KEY != '' }}
run: |
cat >> ~/.ssh/known_hosts <<EOF
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
EOF
shell: bash

# Run prebuild script
- name: "Pre Build Script"
- name: Pre Build Script
if: ${{ inputs.pre-build-script }}
run: ${{ inputs.pre-build-script }}

# Set build variables for reuse in multiple steps
- name: Set Build Variables
id: vars
shell: bash
run: |
flavor=${{ inputs.flavor }}
echo "flavor_capitalized=${flavor~}" >> "$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 }}
Expand All @@ -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
Loading