Files
agentbox-test/.gitea/workflows/ci.yml
T
agentbox 047734b613
CI / build-android (push) Successful in 3m50s
CI / test (push) Successful in 44s
fix: avoid pipefail in find|zip, write file list to temp file first
2026-08-01 11:10:59 +00:00

115 lines
4.0 KiB
YAML

name: CI
on:
push:
branches: [main]
tags: ['v*']
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.13"
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: python -m pytest tests/ -v
build-android:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Java 17
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: "17"
- name: Build APK
run: |
export ANDROID_SDK_ROOT="$HOME/android-sdk"
mkdir -p "$ANDROID_SDK_ROOT"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \
-O /tmp/cmdline-tools.zip
unzip -qo /tmp/cmdline-tools.zip -d /tmp/cmdline-tools-tmp
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
mv /tmp/cmdline-tools-tmp/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest"
{ yes 2>/dev/null || true; } | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null 2>&1 || true
"$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" \
"platform-tools" \
"build-tools;34.0.0" \
"platforms;android-34" > /dev/null 2>&1 || true
echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties
wget -q https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /tmp/gradle.zip
mkdir -p android/.gradle-home
unzip -qo /tmp/gradle.zip -d android/.gradle-home
cd android
.gradle-home/gradle-8.7/bin/gradle wrapper --gradle-version 8.7 --no-daemon
./gradlew assembleDebug --no-daemon
cd ..
# Copy APK to workspace root
cp android/app/build/outputs/apk/debug/app-debug.apk meal-tracker.apk
- name: Package web app
if: startsWith(github.ref, 'refs/tags/v')
run: |
# Avoid pipefail issues with find|zip
find . -type f \
! -path './.git/*' \
! -path './.gitea/*' \
! -name '.env' \
! -path './.pytest_cache/*' \
! -path './__pycache__/*' \
! -name 'meals.db' \
! -path './android/.gradle/*' \
! -path './android/.gradle-home/*' \
! -path './android/app/build/*' \
! -name 'android/local.properties' \
! -name 'android/gradle/wrapper/gradle-wrapper.jar' \
! -name 'android/gradlew.bat' \
> /tmp/files.txt
zip -q meal-tracker.zip -@ < /tmp/files.txt
echo "Packaged $(wc -l < /tmp/files.txt) files ($(du -h meal-tracker.zip | cut -f1))"
- name: Publish release
if: startsWith(github.ref, 'refs/tags/v')
run: |
TAG="${GITHUB_REF#refs/tags/}"
API="$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY"
# Create release
RELEASE=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
-H "Content-Type: application/json" \
-X POST "$API/releases" \
-d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Release $TAG\"}")
RELEASE_ID=$(echo "$RELEASE" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))")
if [ -n "$RELEASE_ID" ]; then
UPLOAD="$API/releases/$RELEASE_ID/assets"
curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
-F "attachment=@meal-tracker.apk;filename=meal-tracker-${TAG}.apk" "$UPLOAD"
curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
-F "attachment=@meal-tracker.zip;filename=meal-tracker-${TAG}.zip" "$UPLOAD"
echo "Release $TAG published with APK + ZIP"
else
echo "Failed to create release: $RELEASE"
exit 1
fi