name: Build Archipelago ISO on: push: branches: [main] workflow_dispatch: inputs: variant: description: 'ISO variant to build' required: false default: 'both' type: choice options: - both - bundled - unbundled jobs: build-backend: runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v4 - name: Build backend (release) run: | source ~/.cargo/env 2>/dev/null || true cargo build --release --manifest-path core/Cargo.toml - name: Install backend binary run: sudo cp core/target/release/archipelago /usr/local/bin/archipelago build-frontend: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v4 - name: Build frontend run: cd neode-ui && npm ci && npm run build build-bundled-iso: needs: [build-backend, build-frontend] if: ${{ github.event.inputs.variant != 'unbundled' }} runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Checkout uses: actions/checkout@v4 - name: Build backend run: | source ~/.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 bundled ISO run: | cd image-recipe sudo DEV_SERVER=localhost BUILD_FROM_SOURCE=0 ./build-auto-installer-iso.sh env: DEBIAN_FRONTEND: noninteractive - name: Copy to Builds folder run: | ISO=$(ls image-recipe/results/archipelago-installer-*.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-bundled-${DATE}.iso" sudo chown 1000:1000 "/var/lib/archipelago/filebrowser/Builds/archipelago-bundled-${DATE}.iso" echo "ISO copied to Builds: archipelago-bundled-${DATE}.iso" fi build-unbundled-iso: needs: [build-backend, build-frontend] if: ${{ github.event.inputs.variant != 'bundled' }} runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout uses: actions/checkout@v4 - name: Build backend run: | source ~/.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 env: DEBIAN_FRONTEND: noninteractive - name: Copy to Builds folder 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 copied to Builds: archipelago-unbundled-${DATE}.iso" fi