#!/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/}}" webhook_url="${DISCORD_DEPLOY_WEBHOOK_URL:-}" if [ -z "$webhook_url" ]; then echo "DISCORD_DEPLOY_WEBHOOK_URL is not configured; skipping Discord notification." exit 0 fi node - "$status" "$title" "$color" "$target_url" "$repo" "$branch" "$short_commit" "$build_url" "$webhook_url" <<'NODE' const [ status, title, color, targetUrl, repo, branch, shortCommit, buildUrl, webhookUrl, ] = process.argv.slice(2); const payload = { content: `Bone Kingdom deploy status: ${status}`, embeds: [ { title, url: targetUrl, color: Number(color), fields: [ { name: 'Status', value: status, inline: true }, { name: 'Repo', value: repo, inline: true }, { name: 'Branch', value: branch, inline: true }, { name: 'Commit', value: shortCommit, inline: true }, { name: 'Target', value: targetUrl, inline: false }, { name: 'Build', value: buildUrl, inline: false }, ], }, ], }; const response = await fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), }); if (!response.ok) { const responseBody = await response.text(); console.error(`Discord notification failed: ${response.status} ${responseBody}`); process.exit(1); } NODE