name: Build and Deploy on: push: branches: [master] workflow_dispatch: env: REGISTRY: gitea.v.paler.net IMAGE: ppetru/animaltrack jobs: build-and-deploy: runs-on: nix steps: - uses: actions/checkout@v4 - name: Build Docker image run: | nix build .#dockerImage --out-link result - name: Push to registry run: | nix shell nixpkgs#skopeo -c skopeo copy \ --dest-creds "${{ secrets.REGISTRY_USERNAME }}:${{ secrets.REGISTRY_PASSWORD }}" \ --insecure-policy \ docker-archive:result \ docker://${{ env.REGISTRY }}/${{ env.IMAGE }}:latest - name: Deploy to Nomad env: NOMAD_ADDR: ${{ secrets.NOMAD_ADDR }} run: | # Force re-evaluation (uuid changes on each job run) curl -sS -X POST "$NOMAD_ADDR/v1/job/animaltrack/evaluate" # Wait for deployment sleep 5 DEPLOY_ID=$(curl -sS "$NOMAD_ADDR/v1/job/animaltrack/deployments" | \ nix shell nixpkgs#jq -c jq -r '.[0].ID') for i in $(seq 1 30); do STATUS=$(curl -sS "$NOMAD_ADDR/v1/deployment/$DEPLOY_ID" | \ nix shell nixpkgs#jq -c jq -r '.Status') echo "Deployment status: $STATUS" case $STATUS in successful) exit 0 ;; failed|cancelled) exit 1 ;; esac sleep 10 done echo "Timeout waiting for deployment" exit 1