feat(ci): add woodpecker deploy pipeline
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
VITE_LAST_BUILD_DATE=20260616
|
||||
VITE_LAST_SUCCESSFUL_COMMIT=13aa686
|
||||
VITE_LAST_BUILD_DATE=20260623
|
||||
VITE_LAST_SUCCESSFUL_COMMIT=f531e1b
|
||||
|
||||
@@ -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 '<div id="root">' /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]
|
||||
@@ -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',
|
||||
|
||||
Generated
+2
-2
@@ -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",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "BlbThroneOfTheBoneKing",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"private": true,
|
||||
"main": "dist/electron/main.js",
|
||||
"scripts": {
|
||||
|
||||
Executable
+48
@@ -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"
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user