Files
game-tracker/.gitea/workflows/pull_request.yaml
Felix Kirchner 0f83730a24
Some checks failed
Pull Request Pipeline / lint (pull_request) Has been skipped
Pull Request Pipeline / test (pull_request) Has been skipped
Pull Request Pipeline / build-android (pull_request) Failing after 2m11s
Tried new build workflow
2026-01-23 14:11:05 +01:00

158 lines
6.7 KiB
YAML

name: Pull Request Pipeline
on:
pull_request:
jobs:
build-android:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK
run: |
if command -v sudo >/dev/null 2>&1; then
sudo apt-get update && sudo apt-get install -y openjdk-11-jdk
else
apt-get update && apt-get install -y openjdk-11-jdk
fi
- name: Install Flutter (wget)
run: |
wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz
tar xf flutter_linux_3.38.2-stable.tar.xz
git config --global --add safe.directory "$(pwd)/flutter"
echo "$(pwd)/flutter/bin" >> $GITEA_PATH
- name: Install Android SDK command-line tools and components
run: |
export ANDROID_SDK_ROOT="$HOME/android-sdk"
# If SDK already present (e.g., mounted from host or cached), skip install
if [ -x "$ANDROID_SDK_ROOT/platform-tools/adb" ] || [ -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then
echo "Found existing Android SDK at $ANDROID_SDK_ROOT -- skipping download/install."
ls -la $ANDROID_SDK_ROOT || true
exit 0
fi
if command -v sudo >/dev/null 2>&1; then
sudo apt-get update && sudo apt-get install -y unzip
else
apt-get update && apt-get install -y unzip
fi
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools
cd $ANDROID_SDK_ROOT
# Allow overriding the download URL via environment variable (useful for mirrors)
default_urls=(
"https://dl.google.com/android/repository/commandlinetools-linux_latest.zip"
"https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip"
"https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip"
"https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip"
"https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip"
)
urls=()
if [ -n "$ANDROID_CMDLINE_TOOLS_URL" ]; then
urls+=("$ANDROID_CMDLINE_TOOLS_URL")
fi
urls+=("${default_urls[@]}")
downloaded=false
for url in "${urls[@]}"; do
echo "Trying $url"
# Check existence (print server response if not found)
if wget -q --spider "$url" 2>&1 | tee /dev/stderr | grep -q "HTTP/1.1 200\|HTTP/2 200"; then
echo "Downloading $url"
if wget --show-progress --progress=bar:force:noscroll:giga "$url" -O cmdline-tools.zip; then
downloaded=true
break
fi
else
echo "URL not available or returned non-200: $url"
echo "Server response:"
wget -S --spider "$url" 2>&1 || true
fi
done
if [ "$downloaded" != "true" ]; then
echo "ERROR: Could not download Android command-line tools from known URLs."
echo "Tried: ${urls[*]}"
echo "If you are running this locally with 'act' or another restricted runner, ensure the runner has network access or set ANDROID_CMDLINE_TOOLS_URL to a reachable mirror."
echo "Examples for local 'act' runs:"
echo " - Pre-download commandlinetools zip and mount into the container as: -v /path/to/cmdline-tools.zip:",
echo " and set ANDROID_SDK_ROOT to /github/home/android-sdk (or pass ANDROID_CMDLINE_TOOLS_URL to point to the mounted file)"
echo " - Or set ANDROID_CMDLINE_TOOLS_URL to a working URL: e.g. export ANDROID_CMDLINE_TOOLS_URL=\"file:///github/home/cmdline-tools.zip\""
exit 8
fi
unzip -q cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools
# move the extracted folder into a 'latest' folder (sdkmanager expects this layout)
if [ -d "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" ]; then
mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest || true
else
# Some zips extract a folder named 'cmdline-tools' already under different structure; try to normalize
for d in $ANDROID_SDK_ROOT/cmdline-tools/*; do
if [ -d "$d/bin" ]; then
mv "$d" $ANDROID_SDK_ROOT/cmdline-tools/latest || true
break
fi
done
fi
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH
# Install essential SDK components (adjust platform version/build-tools as needed)
yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools" "platforms;android-33" "build-tools;33.0.2"
yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --licenses || true
- name: Add Android SDK to PATH
run: |
echo "$HOME/android-sdk/platform-tools" >> $GITEA_PATH
echo "$HOME/android-sdk/cmdline-tools/latest/bin" >> $GITEA_PATH
- name: Get dependencies
run: flutter pub get
- name: Build APK
env:
ANDROID_SDK_ROOT: $HOME/android-sdk
ANDROID_HOME: $HOME/android-sdk
JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64
run: flutter build apk --release
lint:
runs-on: ubuntu-latest
if: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Flutter (wget)
run: |
wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz
tar xf flutter_linux_3.38.2-stable.tar.xz
git config --global --add safe.directory "$(pwd)/flutter"
echo "$(pwd)/flutter/bin" >> $GITEA_PATH
- name: Get dependencies
run: flutter pub get
- name: Analyze Formatting
run: flutter analyze lib test
test:
runs-on: ubuntu-latest
if: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Flutter (wget)
run: |
wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz
tar xf flutter_linux_3.38.2-stable.tar.xz
git config --global --add safe.directory "$(pwd)/flutter"
echo "$(pwd)/flutter/bin" >> $GITEA_PATH
- name: Get dependencies
run: flutter pub get
- name: Run tests
run: flutter test