feat(woodpecker): add Discord notifications for build status
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- Implemented success and failure notifications using `jq` for secure payload formatting. - Enhanced YAML to manage build alerts and improve CI visibility.
This commit is contained in:
138
.woodpecker.yml
138
.woodpecker.yml
@ -5,6 +5,7 @@ steps:
|
|||||||
DISCORD_WEBHOOK:
|
DISCORD_WEBHOOK:
|
||||||
from_secret: discord_webhook
|
from_secret: discord_webhook
|
||||||
commands:
|
commands:
|
||||||
|
- apt-get update && apt-get install -y jq
|
||||||
- npm install --package-lock-only
|
- npm install --package-lock-only
|
||||||
- npm audit --audit-level=moderate || AUDIT_EXIT=$?
|
- npm audit --audit-level=moderate || AUDIT_EXIT=$?
|
||||||
- |
|
- |
|
||||||
@ -17,38 +18,36 @@ steps:
|
|||||||
echo "=========================================="
|
echo "=========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Discord Benachrichtigung senden
|
# Discord Benachrichtigung mit jq (sicher gegen Sonderzeichen)
|
||||||
if [ ! -z "$DISCORD_WEBHOOK" ]; then
|
if [ ! -z "$DISCORD_WEBHOOK" ]; then
|
||||||
curl -H "Content-Type: application/json" \
|
PAYLOAD=$(printf '%s' "${CI_COMMIT_MESSAGE:-No commit message}" | jq -Rs \
|
||||||
-d "{
|
--arg title "⚠️ npm audit Warnung - Build #${CI_BUILD_NUMBER}" \
|
||||||
\"embeds\": [{
|
--arg repo "${CI_REPO}" \
|
||||||
\"title\": \"⚠️ npm audit Warnung\",
|
--arg branch "${CI_COMMIT_BRANCH}" \
|
||||||
\"description\": \"Es wurden Sicherheitslücken in den Dependencies gefunden!\",
|
--arg commit "${CI_COMMIT_SHA:0:7}" \
|
||||||
\"color\": 16744448,
|
--arg author "${CI_COMMIT_AUTHOR}" \
|
||||||
\"fields\": [
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \
|
||||||
{
|
'. as $message | {
|
||||||
\"name\": \"Repository\",
|
embeds: [{
|
||||||
\"value\": \"Gallus_Pub\",
|
title: $title,
|
||||||
\"inline\": true
|
description: "Es wurden Sicherheitslücken in den Dependencies gefunden!",
|
||||||
},
|
color: 16744448,
|
||||||
{
|
fields: [
|
||||||
\"name\": \"Branch\",
|
{ name: "Repository", value: $repo, inline: true },
|
||||||
\"value\": \"${CI_COMMIT_BRANCH}\",
|
{ name: "Branch", value: $branch, inline: true },
|
||||||
\"inline\": true
|
{ name: "Commit", value: ("`" + $commit + "`"), inline: true },
|
||||||
},
|
{ name: "Author", value: $author, inline: true },
|
||||||
{
|
{ name: "Commit Message", value: $message, inline: false }
|
||||||
\"name\": \"Commit\",
|
|
||||||
\"value\": \"${CI_COMMIT_SHA:0:7}\",
|
|
||||||
\"inline\": true
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
\"footer\": {
|
footer: {
|
||||||
\"text\": \"Build läuft trotzdem durch\"
|
text: "Build läuft trotzdem durch"
|
||||||
},
|
},
|
||||||
\"timestamp\": \"$(date -u +%Y-%m-%dT%H:%M:%S.000Z)\"
|
timestamp: $timestamp
|
||||||
}]
|
}]
|
||||||
}" \
|
}')
|
||||||
"$DISCORD_WEBHOOK"
|
|
||||||
|
curl -H "Content-Type: application/json" -X POST \
|
||||||
|
-d "$PAYLOAD" "$DISCORD_WEBHOOK"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "✓ No vulnerabilities found"
|
echo "✓ No vulnerabilities found"
|
||||||
@ -63,10 +62,93 @@ steps:
|
|||||||
environment:
|
environment:
|
||||||
FLY_API_TOKEN:
|
FLY_API_TOKEN:
|
||||||
from_secret: FLY_API_TOKEN
|
from_secret: FLY_API_TOKEN
|
||||||
|
DISCORD_WEBHOOK:
|
||||||
|
from_secret: discord_webhook
|
||||||
commands:
|
commands:
|
||||||
|
- apt-get update && apt-get install -y jq
|
||||||
- curl -L https://fly.io/install.sh | sh
|
- curl -L https://fly.io/install.sh | sh
|
||||||
- export PATH="$HOME/.fly/bin:$PATH"
|
- export PATH="$HOME/.fly/bin:$PATH"
|
||||||
- flyctl deploy --config fly.toml --app gallus-pub --remote-only
|
- flyctl deploy --config fly.toml --app gallus-pub --remote-only
|
||||||
when:
|
when:
|
||||||
branch: main
|
branch: main
|
||||||
event: push
|
event: push
|
||||||
|
|
||||||
|
notify_success:
|
||||||
|
image: node:20
|
||||||
|
environment:
|
||||||
|
DISCORD_WEBHOOK:
|
||||||
|
from_secret: discord_webhook
|
||||||
|
commands:
|
||||||
|
- apt-get update && apt-get install -y jq
|
||||||
|
- |
|
||||||
|
if [ ! -z "$DISCORD_WEBHOOK" ]; then
|
||||||
|
PAYLOAD=$(printf '%s' "${CI_COMMIT_MESSAGE:-No commit message}" | jq -Rs \
|
||||||
|
--arg title "✅ Build #${CI_BUILD_NUMBER} - Success" \
|
||||||
|
--arg repo "${CI_REPO}" \
|
||||||
|
--arg branch "${CI_COMMIT_BRANCH}" \
|
||||||
|
--arg commit "${CI_COMMIT_SHA:0:7}" \
|
||||||
|
--arg author "${CI_COMMIT_AUTHOR}" \
|
||||||
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \
|
||||||
|
'. as $message | {
|
||||||
|
embeds: [{
|
||||||
|
title: $title,
|
||||||
|
description: "Build und Deployment erfolgreich abgeschlossen!",
|
||||||
|
color: 3066993,
|
||||||
|
fields: [
|
||||||
|
{ name: "Repository", value: $repo, inline: true },
|
||||||
|
{ name: "Branch", value: $branch, inline: true },
|
||||||
|
{ name: "Commit", value: ("`" + $commit + "`"), inline: true },
|
||||||
|
{ name: "Author", value: $author, inline: true },
|
||||||
|
{ name: "Commit Message", value: $message, inline: false }
|
||||||
|
],
|
||||||
|
timestamp: $timestamp
|
||||||
|
}]
|
||||||
|
}')
|
||||||
|
|
||||||
|
curl -H "Content-Type: application/json" -X POST \
|
||||||
|
-d "$PAYLOAD" "$DISCORD_WEBHOOK"
|
||||||
|
fi
|
||||||
|
when:
|
||||||
|
branch: main
|
||||||
|
event: push
|
||||||
|
status: success
|
||||||
|
|
||||||
|
notify_failure:
|
||||||
|
image: node:20
|
||||||
|
environment:
|
||||||
|
DISCORD_WEBHOOK:
|
||||||
|
from_secret: discord_webhook
|
||||||
|
commands:
|
||||||
|
- apt-get update && apt-get install -y jq
|
||||||
|
- |
|
||||||
|
if [ ! -z "$DISCORD_WEBHOOK" ]; then
|
||||||
|
PAYLOAD=$(printf '%s' "${CI_COMMIT_MESSAGE:-No commit message}" | jq -Rs \
|
||||||
|
--arg title "❌ Build #${CI_BUILD_NUMBER} - Failure" \
|
||||||
|
--arg repo "${CI_REPO}" \
|
||||||
|
--arg branch "${CI_COMMIT_BRANCH}" \
|
||||||
|
--arg commit "${CI_COMMIT_SHA:0:7}" \
|
||||||
|
--arg author "${CI_COMMIT_AUTHOR}" \
|
||||||
|
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \
|
||||||
|
'. as $message | {
|
||||||
|
embeds: [{
|
||||||
|
title: $title,
|
||||||
|
description: "Build oder Deployment ist fehlgeschlagen!",
|
||||||
|
color: 15158332,
|
||||||
|
fields: [
|
||||||
|
{ name: "Repository", value: $repo, inline: true },
|
||||||
|
{ name: "Branch", value: $branch, inline: true },
|
||||||
|
{ name: "Commit", value: ("`" + $commit + "`"), inline: true },
|
||||||
|
{ name: "Author", value: $author, inline: true },
|
||||||
|
{ name: "Commit Message", value: $message, inline: false }
|
||||||
|
],
|
||||||
|
timestamp: $timestamp
|
||||||
|
}]
|
||||||
|
}')
|
||||||
|
|
||||||
|
curl -H "Content-Type: application/json" -X POST \
|
||||||
|
-d "$PAYLOAD" "$DISCORD_WEBHOOK"
|
||||||
|
fi
|
||||||
|
when:
|
||||||
|
branch: main
|
||||||
|
event: push
|
||||||
|
status: failure
|
||||||
Reference in New Issue
Block a user