CI/CD Pipeline Integration: iOS + Android stages with Gitea-native syntax #11

Merged
kfj001 merged 64 commits from ci/pipeline-integration into main 2026-08-03 20:16:03 -07:00
3 changed files with 38 additions and 70 deletions
Showing only changes of commit 0fc01646ac - Show all commits

No files matched your search

+1 -5
View File
@@ -1,8 +1,5 @@
{ {
"name": "kryz-go", "name": "kryz-go",
"mounts": [
// "source=/dev/dri,target=/dev/dri,type=bind"
],
"build": { "build": {
"dockerfile": "Dockerfile" "dockerfile": "Dockerfile"
}, },
@@ -14,8 +11,7 @@
] ]
} }
}, },
"postCreateCommand": "flutter pub get && python3 -m venv .venv && . .venv/bin/activate && pip install --upgrade pip && pip install -r requirements.txt && curl -fsSL https://claude.ai/install.sh | bash", "postCreateCommand": "flutter pub get",
Outdated
Review

We are no longer initializing the python venv in the dev container - tools like the white labeler script are dependent on the python dependencies specified during venv creation. Are we doing this elsewhere in this PR, then?

We are no longer initializing the python venv in the dev container - tools like the white labeler script are dependent on the python dependencies specified during venv creation. Are we doing this elsewhere in this PR, then?
"postStartCommand": ".venv/bin/activate",
"containerEnv": { "containerEnv": {
"ANTHROPIC_BASE_URL": "http://192.168.1.108:1234", "ANTHROPIC_BASE_URL": "http://192.168.1.108:1234",
"ANTHROPIC_API_KEY": "lmstudio", "ANTHROPIC_API_KEY": "lmstudio",
+7 -6
View File
@@ -7,12 +7,9 @@
# Lint/test use continue-on-error: true so Magrathea failures don't block. # Lint/test use continue-on-error: true so Magrathea failures don't block.
# Android build detects wrong platform and exits 0 gracefully. # Android build detects wrong platform and exits 0 gracefully.
# #
# CONTAINER IMAGE: The build-android job uses a pre-built Docker image # IMPORTANT: $GITHUB_PATH does NOT persist between steps in Gitea Actions/act.
# (kryz-ci:latest) that includes Flutter, JDK 17, and Android SDK baked in — # Each step is a separate shell. We export PATH="$PWD/flutter/bin:$PATH" in
# eliminating 3-5 GB of downloads per job. Build once on the runner host: # every step that uses flutter/dart commands.
# docker build -f .devcontainer/ci.Dockerfile -t kryz-ci:latest .devcontainer
#
# Estimated impact: 40min -> 5-10min (with pre-built image)
name: CI name: CI
3
@@ -118,6 +115,10 @@ jobs:
# ── Stage 2: Android build (uses pre-built container image) ────── # ── Stage 2: Android build (uses pre-built container image) ──────
# The kryz-ci:latest image contains Flutter, JDK 17, Android SDK, and
# flutter precache --android baked in — eliminating ~3-5 GB of downloads.
# Build once on the runner host:
# docker build -f .devcontainer/ci.Dockerfile -t kryz-ci:latest .devcontainer
build-android: build-android:
name: Build Android name: Build Android
runs-on: [self-hosted, linux, x64] runs-on: [self-hosted, linux, x64]
1
+30 -59
View File
@@ -1,6 +1,11 @@
# kryz-go-flutter Release Pipeline # kryz-go-flutter Release Pipeline
Review

What is the function of this file? We aren't using our ci/cd to generate stable artifacts.

What is the function of this file? We aren't using our ci/cd to generate stable artifacts.
# Triggers on version tags (v1.0.0, v1.0.1, etc.) # Triggers on version tags (v1.0.0, v1.0.1, etc.)
# Produces signed artifacts and attaches them to a Gitea Release # Produces signed artifacts and attaches them to a Gitea Release
#
# CONTAINER IMAGE: The build-android job uses a pre-built Docker image
# (kryz-ci:latest) that includes Flutter, JDK 17, and Android SDK baked in.
# Build once on the runner host:
# docker build -f .devcontainer/ci.Dockerfile -t kryz-ci:latest .devcontainer
name: Release name: Release
@@ -24,6 +29,11 @@ jobs:
- name: Setup Flutter - name: Setup Flutter
run: | run: |
set -e set -e
if command -v flutter &> /dev/null; then
echo "Flutter already installed, skipping download."
flutter --version
exit 0
fi
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" \ curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" \
-o /tmp/flutter.tar.xz -o /tmp/flutter.tar.xz
tar -xf /tmp/flutter.tar.xz -C "$PWD" tar -xf /tmp/flutter.tar.xz -C "$PWD"
@@ -64,6 +74,11 @@ jobs:
- name: Setup Flutter - name: Setup Flutter
run: | run: |
set -e set -e
if command -v flutter &> /dev/null; then
echo "Flutter already installed, skipping download."
flutter --version
exit 0
fi
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" \ curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" \
-o /tmp/flutter.tar.xz -o /tmp/flutter.tar.xz
tar -xf /tmp/flutter.tar.xz -C "$PWD" tar -xf /tmp/flutter.tar.xz -C "$PWD"
@@ -86,60 +101,26 @@ jobs:
flutter test --reporter=expanded flutter test --reporter=expanded
# ── Android release build ─────────────────────────────────── # ── Android release build (uses pre-built container image) ──────
build-android: build-android:
name: Build Android Release name: Build Android Release
runs-on: [self-hosted, linux, x64] runs-on: [self-hosted, linux, x64]
needs: [test] needs: [test]
container:
image: kryz-ci:latest
options: --user vscode
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup Java 17 - name: Verify environment
run: | run: |
set -e echo "=== Environment check ==="
curl -fsSL "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz" \ echo "Flutter: $(flutter --version | head -1)"
-o /tmp/jdk.tar.gz echo "Java: $(java -version 2>&1 | head -1)"
mkdir -p "$HOME/jdk" echo "SDK tools: $(sdkmanager --version)"
tar -xzf /tmp/jdk.tar.gz -C "$HOME/jdk" --strip-components=1 echo "Android SDK: $ANDROID_HOME"
export PATH="$HOME/jdk/bin:$PATH" echo "JAVA_HOME: $JAVA_HOME"
export JAVA_HOME="$HOME/jdk"
java -version
- name: Setup Flutter
run: |
set -e
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" \
-o /tmp/flutter.tar.xz
tar -xf /tmp/flutter.tar.xz -C "$PWD"
export PATH="$PWD/flutter/bin:$PATH"
flutter --version
- name: Install Android SDK command-line tools
run: |
set -e
export ANDROID_HOME="${HOME}/android-sdk"
mkdir -p "${ANDROID_HOME}/cmdline-tools"
curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" -o /tmp/cmdline-tools.zip
unzip -q /tmp/cmdline-tools.zip -d "${ANDROID_HOME}/cmdline-tools"
mv "${ANDROID_HOME}/cmdline-tools/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest"
export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}"
yes | sdkmanager --licenses >/dev/null 2>&1 || true
sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
- name: Pre-cache Android platform artifacts
run: |
export PATH="$PWD/flutter/bin:$PATH"
flutter precache --android
- name: Accept Android SDK licenses
run: |
yes | "${HOME}/android-sdk/cmdline-tools/latest/bin/sdkmanager" --licenses || true
- name: Setup Python
run: |
set -e
python3 --version
- name: Install Python dependencies - name: Install Python dependencies
run: | run: |
@@ -147,14 +128,10 @@ jobs:
pip install -r requirements.txt || true pip install -r requirements.txt || true
- name: Install Flutter dependencies - name: Install Flutter dependencies
run: | run: flutter pub get
export PATH="$PWD/flutter/bin:$PATH"
flutter pub get
- name: Generate stubs (lint gate support) - name: Generate stubs (lint gate support)
run: | run: python3 ci_stub_gen.py
export PATH="$PWD/flutter/bin:$PATH"
python3 ci_stub_gen.py
# If release signing secrets are available, write keystore # If release signing secrets are available, write keystore
# and update build.gradle.kts to use a release signing config. # and update build.gradle.kts to use a release signing config.
@@ -176,16 +153,10 @@ jobs:
EOF EOF
- name: Build APK (release) - name: Build APK (release)
run: | run: flutter build apk --release
export JAVA_HOME="$HOME/jdk"
export PATH="$PWD/flutter/bin:$PATH"
flutter build apk --release
- name: Build App Bundle (release) - name: Build App Bundle (release)
run: | run: flutter build appbundle --release
export JAVA_HOME="$HOME/jdk"
export PATH="$PWD/flutter/bin:$PATH"
flutter build appbundle --release
- name: List build outputs - name: List build outputs
run: | run: |