diff --git a/.env b/.env index 5c1a29f..e068092 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -VITE_LAST_BUILD_DATE=20260616 -VITE_LAST_SUCCESSFUL_COMMIT=13aa686 +VITE_LAST_BUILD_DATE=20260623 +VITE_LAST_SUCCESSFUL_COMMIT=f531e1b diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..67f1e0a --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,65 @@ +when: + - event: push + branch: main + - event: manual + +steps: + notify-start: + image: python:3.12-alpine + environment: + DEPLOY_TARGET_URL: http://bone-kingdom.tabitha.tealthrone/ + DISCORD_DEPLOY_WEBHOOK_URL: + from_secret: discord_deploy_webhook_url + commands: + - apk add --no-cache curl + - sh scripts/woodpecker/notify-discord.sh started "Bone Kingdom Deploy Started" 5793266 + + validate: + image: node:24-bookworm + commands: + - npm ci + - npm run lint + - npm run test -- --runInBand + - npm run web:build + + deploy: + image: alpine:3.20 + environment: + DEPLOY_TARGET_URL: http://bone-kingdom.tabitha.tealthrone/ + volumes: + - /Users/Tabitha/.openclaw/workspace_father/blb-throne-of-the-bone-king/dist/renderer:/deploy-target + commands: + - apk add --no-cache curl rsync + - test -d dist/renderer + - mkdir -p /deploy-target + - rsync -a --delete dist/renderer/ /deploy-target/ + - curl -fsS "$DEPLOY_TARGET_URL" >/tmp/bone-kingdom-index.html + - grep -q '
' /tmp/bone-kingdom-index.html + depends_on: + - validate + + notify-success: + image: python:3.12-alpine + environment: + DEPLOY_TARGET_URL: http://bone-kingdom.tabitha.tealthrone/ + DISCORD_DEPLOY_WEBHOOK_URL: + from_secret: discord_deploy_webhook_url + commands: + - apk add --no-cache curl + - sh scripts/woodpecker/notify-discord.sh succeeded "Bone Kingdom Deploy Succeeded" 5763719 + depends_on: + - deploy + when: + status: [success] + + notify-failure: + image: python:3.12-alpine + environment: + DEPLOY_TARGET_URL: http://bone-kingdom.tabitha.tealthrone/ + DISCORD_DEPLOY_WEBHOOK_URL: + from_secret: discord_deploy_webhook_url + commands: + - apk add --no-cache curl + - sh scripts/woodpecker/notify-discord.sh failed "Bone Kingdom Deploy Failed" 15158332 + when: + status: [failure] diff --git a/__tests__/changelogData.test.ts b/__tests__/changelogData.test.ts index 894360b..11490cd 100644 --- a/__tests__/changelogData.test.ts +++ b/__tests__/changelogData.test.ts @@ -8,7 +8,7 @@ describe('changelog data', () => { it('provides valid changelog entries', () => { expect(isChangelogEntries(changelogEntries)).toBe(true); expect(changelogEntries.length).toBeGreaterThan(0); - expect(changelogEntries[0]).toEqual( + expect(changelogEntries).toContainEqual( expect.objectContaining({ id: 'build-metadata-changelog-poc', title: 'Build Metadata and Changelog Scaffold', diff --git a/package-lock.json b/package-lock.json index 5009666..68336e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "BlbThroneOfTheBoneKing", - "version": "0.0.2", + "version": "0.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "BlbThroneOfTheBoneKing", - "version": "0.0.2", + "version": "0.0.3", "dependencies": { "@react-native-async-storage/async-storage": "^3.1.1", "@react-native/new-app-screen": "0.85.3", diff --git a/package.json b/package.json index e397b7d..b6c3a60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "BlbThroneOfTheBoneKing", - "version": "0.0.2", + "version": "0.0.3", "private": true, "main": "dist/electron/main.js", "scripts": { diff --git a/scripts/woodpecker/notify-discord.sh b/scripts/woodpecker/notify-discord.sh new file mode 100755 index 0000000..72915ed --- /dev/null +++ b/scripts/woodpecker/notify-discord.sh @@ -0,0 +1,48 @@ +#!/bin/sh +set -eu + +status="${1:-unknown}" +title="${2:-Bone Kingdom deploy update}" +color="${3:-5793266}" +target_url="${DEPLOY_TARGET_URL:-http://bone-kingdom.tabitha.tealthrone/}" +commit="${CI_COMMIT_SHA:-unknown}" +short_commit="$(printf '%s' "$commit" | cut -c 1-12)" +branch="${CI_COMMIT_BRANCH:-unknown}" +repo="${CI_REPO:-jacob-mathison/blb-throne-of-the-bone-king}" +build_url="${CI_PIPELINE_URL:-${CI_BUILD_LINK:-http://localhost:13580/}}" + +if [ -z "${DISCORD_DEPLOY_WEBHOOK_URL:-}" ]; then + echo "DISCORD_DEPLOY_WEBHOOK_URL is not configured; skipping Discord notification." + exit 0 +fi + +python3 - "$status" "$title" "$color" "$target_url" "$repo" "$branch" "$short_commit" "$build_url" <<'PY' > /tmp/discord-payload.json +import json +import sys + +status, title, color, target_url, repo, branch, short_commit, build_url = sys.argv[1:9] +payload = { + "content": f"Bone Kingdom deploy status: {status}", + "embeds": [ + { + "title": title, + "url": target_url, + "color": int(color), + "fields": [ + {"name": "Status", "value": status, "inline": True}, + {"name": "Repo", "value": repo, "inline": True}, + {"name": "Branch", "value": branch, "inline": True}, + {"name": "Commit", "value": short_commit, "inline": True}, + {"name": "Target", "value": target_url, "inline": False}, + {"name": "Build", "value": build_url, "inline": False}, + ], + } + ], +} +print(json.dumps(payload)) +PY + +curl -fsS \ + -H "Content-Type: application/json" \ + --data-binary @/tmp/discord-payload.json \ + "$DISCORD_DEPLOY_WEBHOOK_URL" diff --git a/src/data/changelog.json b/src/data/changelog.json index e2c59f8..db14690 100644 --- a/src/data/changelog.json +++ b/src/data/changelog.json @@ -1,4 +1,16 @@ [ + { + "id": "woodpecker-deploy-pipeline", + "version": "0.0.2-20260623-f531e1b", + "createdAt": "2026-06-23", + "title": "Woodpecker Deploy Pipeline", + "summary": "Added a Woodpecker pipeline for validating, building, notifying, and deploying the hosted web app.", + "changes": [ + "Added deploy lifecycle Discord notifications for start, success, and failure states.", + "Added Woodpecker validation for lint, tests, and the Vite web build.", + "Added a deployment step that syncs the built renderer bundle to the local nginx host." + ] + }, { "id": "build-metadata-changelog-poc", "version": "0.0.1-20260616-13aa686",