#!/bin/bash # ═══════════════════════════════════════════════════════ # Setup Gitea Act Runner for Android APK builds # Run this ONCE on the build machine (this WSL instance) # ═══════════════════════════════════════════════════════ set -e GITEA_URL="http://192.168.5.10:3000" GITEA_TOKEN="4316139b56813d461f5a5a4fa6fa8eb94b5e37e6" RUNNER_DIR="$HOME/act_runner" ANDROID_HOME_DIR="$HOME/android-sdk" echo "══════════════════════════════════════" echo " Step 1: Install Java 17" echo "══════════════════════════════════════" if java --version 2>&1 | grep -q "17"; then echo "Java 17 already installed" else sudo apt-get update sudo apt-get install -y openjdk-17-jdk-headless fi echo "Java: $(java --version 2>&1 | head -1)" echo "" echo "══════════════════════════════════════" echo " Step 2: Install Android SDK" echo "══════════════════════════════════════" if [ -d "$ANDROID_HOME_DIR/platforms" ]; then echo "Android SDK already installed at $ANDROID_HOME_DIR" else mkdir -p "$ANDROID_HOME_DIR" cd /tmp # Download Android command-line tools CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" echo "Downloading Android command-line tools..." wget -q "$CMDLINE_TOOLS_URL" -O cmdline-tools.zip unzip -qo cmdline-tools.zip -d "$ANDROID_HOME_DIR" mkdir -p "$ANDROID_HOME_DIR/cmdline-tools/latest" mv "$ANDROID_HOME_DIR/cmdline-tools/bin" "$ANDROID_HOME_DIR/cmdline-tools/latest/" mv "$ANDROID_HOME_DIR/cmdline-tools/lib" "$ANDROID_HOME_DIR/cmdline-tools/latest/" rm -f cmdline-tools.zip # Accept licenses and install required SDK components export ANDROID_HOME="$ANDROID_HOME_DIR" yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null 2>&1 || true "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \ "platforms;android-35" \ "build-tools;35.0.0" \ "platform-tools" echo "Android SDK installed at $ANDROID_HOME_DIR" fi echo "" echo "══════════════════════════════════════" echo " Step 3: Install Act Runner" echo "══════════════════════════════════════" mkdir -p "$RUNNER_DIR" cd "$RUNNER_DIR" if [ ! -f "$RUNNER_DIR/act_runner" ]; then RUNNER_URL="https://gitea.com/gitea/act_runner/releases/download/v0.2.11/act_runner-0.2.11-linux-amd64" echo "Downloading act_runner..." wget -q "$RUNNER_URL" -O act_runner chmod +x act_runner echo "Act runner downloaded" else echo "Act runner already exists" fi echo "" echo "══════════════════════════════════════" echo " Step 4: Register runner with Gitea" echo "══════════════════════════════════════" if [ -f "$RUNNER_DIR/.runner" ]; then echo "Runner already registered" else # Get registration token via API REG_TOKEN=$(curl -s -X GET \ -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_URL/api/v1/repos/admin/itstransport-android/actions/runners/registration-token" \ | python3 -c "import sys,json; print(json.load(sys.stdin).get('token',''))") if [ -z "$REG_TOKEN" ]; then echo "ERROR: Could not get registration token." echo "Go to Gitea → itstransport-android → Settings → Actions → Runners" echo "Create a runner token and run:" echo " cd $RUNNER_DIR && ./act_runner register --instance $GITEA_URL --token --labels ubuntu-latest:host --name its-android-builder" exit 1 fi echo "Registering runner..." ./act_runner register \ --instance "$GITEA_URL" \ --token "$REG_TOKEN" \ --labels "ubuntu-latest:host" \ --name "its-android-builder" \ --no-interactive echo "Runner registered!" fi echo "" echo "══════════════════════════════════════" echo " Step 5: Create systemd service" echo "══════════════════════════════════════" SERVICE_FILE="/etc/systemd/system/act-runner.service" if [ -f "$SERVICE_FILE" ]; then echo "Service already exists" else sudo tee "$SERVICE_FILE" > /dev/null << EOF [Unit] Description=Gitea Act Runner After=network.target [Service] Type=simple User=$USER WorkingDirectory=$RUNNER_DIR Environment="ANDROID_HOME=$ANDROID_HOME_DIR" Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" Environment="PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$ANDROID_HOME_DIR/cmdline-tools/latest/bin:$ANDROID_HOME_DIR/platform-tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ExecStart=$RUNNER_DIR/act_runner daemon Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable act-runner sudo systemctl start act-runner echo "Service created and started!" fi echo "" echo "══════════════════════════════════════" echo " DONE!" echo "══════════════════════════════════════" echo "" echo "Runner is running. To check status:" echo " sudo systemctl status act-runner" echo "" echo "To test, push a commit to main:" echo " cd ~/itstransport/android" echo " git push origin main" echo "" echo "The workflow will:" echo " 1. Build the release APK" echo " 2. Copy it to backend storage" echo " 3. Update version.json endpoint"