diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index 7963f5fa..7de05240 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -11,40 +11,39 @@ jobs: deploy: runs-on: self-hosted steps: - - uses: actions/checkout@v4 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: npm - - - name: Install dependencies - run: npm ci - - - name: Build Astro static site - run: | - rm -rf dist - npm run build - - - name: Verify static output - run: | - test -f dist/index.html - test -f dist/speeches/index.html - test -f dist/assets/icons/familyfed-favicon.png - - - name: Restart Nomad allocation + - name: Build Astro and restart Nomad env: NOMAD_ADDR: ${{ secrets.NOMAD_ADDR }} NOMAD_TOKEN: ${{ secrets.NOMAD_TOKEN }} + REPO_URL: https://git.bcgen.ie/familyfedie/familyfedie-website.git run: | - set -e - ALLOC_ID=$(curl -sf \ - -H "X-Nomad-Token: $NOMAD_TOKEN" \ - "$NOMAD_ADDR/v1/job/familyfed/allocations" \ - | python3 -c "import sys,json; allocs=json.load(sys.stdin); print(next(a['ID'] for a in allocs if a['ClientStatus']=='running'))") - echo "Stopping allocation to trigger fresh prestart: $ALLOC_ID" - 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." + set -eu + rm -rf source + export REF_NAME="${GITHUB_REF_NAME:-main}" + + nix --extra-experimental-features "nix-command flakes" \ + shell nixpkgs#git nixpkgs#nodejs_24 nixpkgs#curl nixpkgs#jq \ + -c sh -lc ' + set -eu + git clone --depth 1 --branch "$REF_NAME" "$REPO_URL" source + cd source + npm ci + rm -rf dist + npm run build + test -f dist/index.html + test -f dist/speeches/index.html + test -f dist/assets/icons/familyfed-favicon.png + + ALLOC_ID=$(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" + 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." + '