From 2b3a18f208f51aa41a2afeb151c395cc771ba3fb Mon Sep 17 00:00:00 2001 From: Ethan J Lewis Date: Sat, 9 May 2026 11:56:38 -0500 Subject: [PATCH] ci: add Cloudflare Pages deploy + split success/failure notify Mirrors the ethanjlewis.com pipeline structure: - single combined build step (npm ci + test + build) - deploy via npx wrangler to project halfstreet-io - notify-success at priority 0, notify-failure at priority 1 - triggers on push to main + manual Secret names are lowercase (cloudflare_api_token, cloudflare_account_id, pushover_token, pushover_user) to match what's configured on the halfstreet repo in Woodpecker. --- .woodpecker.yml | 70 +++++++++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 26 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index f2a5d95..c76cfdb 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,23 +1,27 @@ when: - - event: [push, pull_request, manual] + - event: push + branch: [main] + - event: manual steps: - - name: install - image: node:22-alpine + - name: build + image: node:22 commands: - npm ci - - - name: test - image: node:22-alpine - commands: - - npm test - - - name: build - image: node:22-alpine - commands: + - npm run test - npm run build - - name: notify + - name: deploy + image: node:22 + environment: + CLOUDFLARE_API_TOKEN: + from_secret: cloudflare_api_token + CLOUDFLARE_ACCOUNT_ID: + from_secret: cloudflare_account_id + commands: + - npx wrangler pages deploy ./dist --project-name halfstreet-io --branch $CI_COMMIT_BRANCH + + - name: notify-success image: curlimages/curl:latest environment: PUSHOVER_TOKEN: @@ -26,21 +30,35 @@ steps: from_secret: pushover_user commands: - | - if [ "$CI_PIPELINE_STATUS" = "success" ]; then - TITLE="Halfstreet CI passed" - PRIORITY=-1 - else - TITLE="Halfstreet CI failed" - PRIORITY=0 - fi - curl -s \ + curl -sS --fail-with-body \ --form-string "token=$PUSHOVER_TOKEN" \ --form-string "user=$PUSHOVER_USER" \ - --form-string "title=$TITLE" \ - --form-string "priority=$PRIORITY" \ - --form-string "message=$CI_COMMIT_BRANCH: $CI_COMMIT_MESSAGE" \ + --form-string "title=halfstreet.io deployed" \ + --form-string "message=Build $CI_PIPELINE_NUMBER succeeded on $CI_COMMIT_BRANCH — $CI_COMMIT_MESSAGE" \ + --form-string "priority=0" \ --form-string "url=$CI_PIPELINE_URL" \ - --form-string "url_title=View pipeline" \ + --form-string "url_title=View build" \ https://api.pushover.net/1/messages.json when: - - status: [success, failure] + - status: success + + - name: notify-failure + image: curlimages/curl:latest + environment: + PUSHOVER_TOKEN: + from_secret: pushover_token + PUSHOVER_USER: + from_secret: pushover_user + commands: + - | + curl -sS --fail-with-body \ + --form-string "token=$PUSHOVER_TOKEN" \ + --form-string "user=$PUSHOVER_USER" \ + --form-string "title=halfstreet.io build failed" \ + --form-string "message=Build $CI_PIPELINE_NUMBER failed on $CI_COMMIT_BRANCH — $CI_COMMIT_MESSAGE" \ + --form-string "priority=1" \ + --form-string "url=$CI_PIPELINE_URL" \ + --form-string "url_title=View build" \ + https://api.pushover.net/1/messages.json + when: + - status: failure