on: push: branches: [main] workflow_dispatch: concurrency: group: deploy-main cancel-in-progress: true jobs: deploy: runs-on: self-hosted steps: - name: Build Astro and restart Nomad env: NOMAD_ADDR: ${{ secrets.NOMAD_ADDR }} NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }} PUBLIC_ANALYTICS_DASHBOARD_URL: ${{ secrets.PUBLIC_ANALYTICS_DASHBOARD_URL }} PUBLIC_CONTACT_FORM_ENDPOINT: ${{ secrets.PUBLIC_CONTACT_FORM_ENDPOINT }} PUBLIC_CONTACT_RECIPIENTS: ${{ secrets.PUBLIC_CONTACT_RECIPIENTS }} PUBLIC_CONTACT_SUBMISSIONS_URL: ${{ secrets.PUBLIC_CONTACT_SUBMISSIONS_URL }} PUBLIC_PLAUSIBLE_DOMAIN: ${{ secrets.PUBLIC_PLAUSIBLE_DOMAIN }} PUBLIC_PLAUSIBLE_SCRIPT_SRC: ${{ secrets.PUBLIC_PLAUSIBLE_SCRIPT_SRC }} REPO_URL: https://git.bcgen.ie/familyfedie/familyfedie-website.git run: | set -eu rm -rf source export REF_NAME="${GITHUB_REF_NAME:-main}" nix --extra-experimental-features "nix-command flakes" \ shell nixpkgs#git \ -c git clone --depth 1 --branch "$REF_NAME" "$REPO_URL" source cd source nix --extra-experimental-features "nix-command flakes" \ shell nixpkgs#nodejs_24 \ -c npm ci rm -rf dist nix --extra-experimental-features "nix-command flakes" \ shell nixpkgs#nodejs_24 \ -c npm run build test -f dist/index.html test -f dist/admin/index.html test -f dist/speeches/index.html test -f dist/assets/icons/familyfed-favicon.png ALLOC_ID=$(nix --extra-experimental-features "nix-command flakes" \ shell nixpkgs#curl nixpkgs#jq \ -c sh -c 'curl -sf -H "X-Nomad-Token: $NOMAD_TOKEN" "$NOMAD_ADDR/v1/job/familyfed/allocations" | jq -r "map(select(.ClientStatus == \"running\"))[0].ID"') test -n "$ALLOC_ID" test "$ALLOC_ID" != "null" echo "Stopping allocation to trigger fresh prestart: $ALLOC_ID" nix --extra-experimental-features "nix-command flakes" \ shell nixpkgs#curl \ -c curl -sf -X POST \ -H "X-Nomad-Token: $NOMAD_TOKEN" \ "$NOMAD_ADDR/v1/allocation/$ALLOC_ID/stop" echo "Deploy triggered. Nomad will schedule a new alloc that re-fetches the site."