name: Build Archipelago ISO on: push: branches: [main] workflow_dispatch: jobs: build-iso: runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout run: | WORKSPACE="${GITHUB_WORKSPACE:-$(pwd)}" CLONE_URL="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" # Inject token for private repo auth if [ -n "$GITHUB_TOKEN" ]; then CLONE_URL=$(echo "$CLONE_URL" | sed "s|https://|https://token:${GITHUB_TOKEN}@|") fi rm -rf "$WORKSPACE" git clone --depth 1 --branch "${GITHUB_REF_NAME:-main}" "$CLONE_URL" "$WORKSPACE" cd "$WORKSPACE" echo "Checked out $(git rev-parse --short HEAD) on ${GITHUB_REF_NAME:-main}" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build backend run: | source $HOME/.cargo/env 2>/dev/null || true cargo build --release --manifest-path core/Cargo.toml sudo cp core/target/release/archipelago /usr/local/bin/archipelago - name: Build frontend run: cd neode-ui && npm ci && npm run build - name: Build unbundled ISO run: | cd image-recipe sudo UNBUNDLED=1 DEV_SERVER=localhost BUILD_FROM_SOURCE=0 ./build-auto-installer-iso.sh - name: Copy to Builds run: | ISO=$(ls image-recipe/results/archipelago-installer-unbundled-*.iso 2>/dev/null | head -1) if [ -n "$ISO" ]; then DATE=$(date +%Y%m%d-%H%M) sudo cp "$ISO" "/var/lib/archipelago/filebrowser/Builds/archipelago-unbundled-${DATE}.iso" sudo chown 1000:1000 "/var/lib/archipelago/filebrowser/Builds/archipelago-unbundled-${DATE}.iso" echo "ISO: archipelago-unbundled-${DATE}.iso" fi