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",
"mounts": [
// "source=/dev/dri,target=/dev/dri,type=bind"
],
"build": {
"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",
"postStartCommand": ".venv/bin/activate",
"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?
"containerEnv": {
"ANTHROPIC_BASE_URL": "http://192.168.1.108:1234",
"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.
# Android build detects wrong platform and exits 0 gracefully.
#
# 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 —
# eliminating 3-5 GB of downloads per job. Build once on the runner host:
# docker build -f .devcontainer/ci.Dockerfile -t kryz-ci:latest .devcontainer
#
# Estimated impact: 40min -> 5-10min (with pre-built image)
# IMPORTANT: $GITHUB_PATH does NOT persist between steps in Gitea Actions/act.
# Each step is a separate shell. We export PATH="$PWD/flutter/bin:$PATH" in
# every step that uses flutter/dart commands.
name: CI
3
@@ -118,6 +115,10 @@ jobs:
# ── 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:
name: Build Android
runs-on: [self-hosted, linux, x64]
1
+30 -59
View File
@@ -1,6 +1,11 @@
# 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.)
# 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
@@ -24,6 +29,11 @@ jobs:
- name: Setup Flutter
run: |
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" \
-o /tmp/flutter.tar.xz
tar -xf /tmp/flutter.tar.xz -C "$PWD"
@@ -64,6 +74,11 @@ jobs:
- name: Setup Flutter
run: |
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" \
-o /tmp/flutter.tar.xz
tar -xf /tmp/flutter.tar.xz -C "$PWD"
@@ -86,60 +101,26 @@ jobs:
flutter test --reporter=expanded
# ── Android release build ───────────────────────────────────
# ── Android release build (uses pre-built container image) ──────
build-android:
name: Build Android Release
runs-on: [self-hosted, linux, x64]
needs: [test]
container:
image: kryz-ci:latest
options: --user vscode
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Java 17
- name: Verify environment
run: |
set -e
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" \
-o /tmp/jdk.tar.gz
mkdir -p "$HOME/jdk"
tar -xzf /tmp/jdk.tar.gz -C "$HOME/jdk" --strip-components=1
export PATH="$HOME/jdk/bin:$PATH"
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
echo "=== Environment check ==="
echo "Flutter: $(flutter --version | head -1)"
echo "Java: $(java -version 2>&1 | head -1)"
echo "SDK tools: $(sdkmanager --version)"
echo "Android SDK: $ANDROID_HOME"
echo "JAVA_HOME: $JAVA_HOME"
- name: Install Python dependencies
run: |
@@ -147,14 +128,10 @@ jobs:
pip install -r requirements.txt || true
- name: Install Flutter dependencies
run: |
export PATH="$PWD/flutter/bin:$PATH"
flutter pub get
run: flutter pub get
- name: Generate stubs (lint gate support)
run: |
export PATH="$PWD/flutter/bin:$PATH"
python3 ci_stub_gen.py
run: python3 ci_stub_gen.py
# If release signing secrets are available, write keystore
# and update build.gradle.kts to use a release signing config.
@@ -176,16 +153,10 @@ jobs:
EOF
- name: Build APK (release)
run: |
export JAVA_HOME="$HOME/jdk"
export PATH="$PWD/flutter/bin:$PATH"
flutter build apk --release
run: flutter build apk --release
- name: Build App Bundle (release)
run: |
export JAVA_HOME="$HOME/jdk"
export PATH="$PWD/flutter/bin:$PATH"
flutter build appbundle --release
run: flutter build appbundle --release
- name: List build outputs
run: |