feat: in-app APK update + Gitea CI/CD workflow
Some checks failed
Build & Deploy APK / build (push) Failing after 2s
Some checks failed
Build & Deploy APK / build (push) Failing after 2s
- Check /api/app/android/version on launch, prompt user to update - Download APK and trigger install via FileProvider - Add Gitea Actions workflow to build release APK and deploy on push - Add setup script for Act Runner (Java 17 + Android SDK) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
152
scripts/setup-runner.sh
Executable file
152
scripts/setup-runner.sh
Executable file
@@ -0,0 +1,152 @@
|
||||
#!/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 <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"
|
||||
Reference in New Issue
Block a user