name: Build (Dev) on: push: branches: - dev workflow_dispatch: env: BINARY_NAME: remoterig jobs: build: runs-on: go-react steps: - name: Checkout uses: actions/checkout@v4 # go-react has Node but not Go. setup-go installs a statically-linked # Go that runs fine here; setup-node's dynamically-linked Node does # not (so Node comes from the image instead). - name: Setup Go uses: actions/setup-go@v5 with: go-version: "1.25" - name: Toolchain versions run: | go version node --version - name: Build React frontend run: | npm ci npm run build - name: Build Go binary (ARM64 cross-compile) run: | CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \ go build -ldflags="-s -w -X main.version=${GITHUB_SHA:0:8}" \ -o ${{ env.BINARY_NAME }} ./cmd/server # Pull-based deploy: publish the binary to a rolling "dev" release. # The Pi polls this release and self-updates (scripts/pi-update.sh); # the runner never needs to reach the closed RemoteRig network. # Done in Node (runner image has no curl/jq/sudo; Node is present). - name: Publish to rolling dev release env: TOKEN: ${{ secrets.GITHUB_TOKEN }} SERVER: ${{ github.server_url }} REPO: ${{ github.repository }} SHA: ${{ github.sha }} run: node .gitea/scripts/publish-release.mjs