From 7a01cbd2c94841303654508872dcfdf8b444546c Mon Sep 17 00:00:00 2001 From: mifi Date: Thu, 12 Feb 2026 01:35:22 -0300 Subject: [PATCH] Final notifications setup --- .woodpecker/ci.yaml | 117 +++++++++++++++++++--------------------- .woodpecker/deploy.yaml | 60 ++++++++++++--------- 2 files changed, 90 insertions(+), 87 deletions(-) diff --git a/.woodpecker/ci.yaml b/.woodpecker/ci.yaml index b490c3f..d7ac663 100644 --- a/.woodpecker/ci.yaml +++ b/.woodpecker/ci.yaml @@ -28,63 +28,21 @@ steps: - name: Send Lint Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: MATTERMOST_CHANNEL_ID + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - # - | - # BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Lint failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - # curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" - | - BODY=$(printf '{"channel_id":"4qgg5yxg67y85q53syijgj4ase","message":"[%s - Build #%s] Lint failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" https://lab.mifi.dev/api/v4/posts + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Lint failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - lint when: - status: [failure] - - name: Send Lint Status Notification (success) - image: curlimages/curl - environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook - MATTERMOST_BOT_ACCESS_TOKEN: - from_secret: mattermost_bot_access_token - commands: - - | - BODY=$(printf '{"channel_id":"4qgg5yxg67y85q53syijgj4ase","message":"[%s - Build #%s] Lint success 🎉"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" https://lab.mifi.dev/api/v4/posts - depends_on: - - lint - when: - - status: [success] - - - name: build - image: node:20-alpine - commands: - - corepack enable && corepack prepare pnpm@10.28.2 --activate - - pnpm install --frozen-lockfile || pnpm install - - pnpm run build - depends_on: - - install - - - name: Send Test Build Status Notification (failure) - image: curlimages/curl - environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook - MATTERMOST_BOT_ACCESS_TOKEN: - from_secret: mattermost_bot_access_token - commands: - - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Test build failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" - depends_on: - - build - when: - - status: [failure] - - name: unit test image: node:20-alpine commands: @@ -93,24 +51,53 @@ steps: - pnpm exec svelte-kit sync - pnpm test depends_on: - - install + - lint - name: Send Unit Test Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: MATTERMOST_CHANNEL_ID + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Unit test failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Unit test failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - unit test when: - status: [failure] + - name: build + image: node:20-alpine + commands: + - corepack enable && corepack prepare pnpm@10.28.2 --activate + - pnpm install --frozen-lockfile || pnpm install + - pnpm run build + depends_on: + - unit test + + - name: Send Test Build Status Notification (failure) + image: curlimages/curl + environment: + MATTERMOST_BOT_ACCESS_TOKEN: + from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: MATTERMOST_CHANNEL_ID + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url + commands: + - | + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Test build failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL + depends_on: + - build + when: + - status: [failure] + - name: e2e test image: mcr.microsoft.com/playwright:v1.58.0-noble commands: @@ -121,19 +108,21 @@ steps: - sleep 2 - CI=1 pnpm run test:e2e depends_on: - - unit test + - build - name: Send E2E Test Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: MATTERMOST_CHANNEL_ID + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] E2E test failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] E2E test failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - e2e test when: @@ -142,19 +131,21 @@ steps: - name: Send CI Pipeline Status Notification (success) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_test_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: MATTERMOST_CHANNEL_ID + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] CI pipeline success 🎉"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] CI pipeline success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - install - lint - - build - unit test + - build - e2e test when: - status: [success] diff --git a/.woodpecker/deploy.yaml b/.woodpecker/deploy.yaml index 6d69fe1..00bbe5c 100644 --- a/.woodpecker/deploy.yaml +++ b/.woodpecker/deploy.yaml @@ -35,14 +35,16 @@ steps: - name: Send Build Status Notification (success) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Build success 🎉"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Build success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - 'Docker image build' when: @@ -51,14 +53,16 @@ steps: - name: Send Build Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Build failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Build failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Docker image build when: @@ -94,14 +98,16 @@ steps: - name: Send Push Status Notification (success) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Push to registry success 🎉"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Push to registry success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - 'Push to registry' when: @@ -110,14 +116,16 @@ steps: - name: Send Push Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Push to registry failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Push to registry failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - 'Push to registry' when: @@ -146,14 +154,16 @@ steps: - name: Send Deploy Status Notification (success) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Production Deploy success 🎉"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Production Deploy success 🎉"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - 'Trigger Portainer stack redeploy' when: @@ -162,14 +172,16 @@ steps: - name: Send Deploy Status Notification (failure) image: curlimages/curl environment: - MATTERMOST_WEBHOOK_URL: - from_secret: mattermost_deploy_webhook MATTERMOST_BOT_ACCESS_TOKEN: from_secret: mattermost_bot_access_token + MATTERMOST_CHANNEL_ID: + from_secret: mattermost_pushes_channel_id + MATTERMOST_POST_API_URL: + from_secret: mattermost_post_api_url commands: - | - BODY=$(printf '{"username":"WoodpeckerBot","text":"[%s - Build #%s] Production Deploy failure 💩"}' "$CI_REPO" "$CI_PIPELINE_NUMBER") - curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" "$MATTERMOST_WEBHOOK_URL" + BODY=$(printf '{"channel_id":"%s","message":"[%s - Build #%s] Production Deploy failure 💩"}' "$MATTERMOST_CHANNEL_ID" "$CI_REPO" "$CI_PIPELINE_NUMBER") + curl -sS -X POST -H "Content-Type: application/json" -d "$BODY" -H "Authorization: Bearer $MATTERMOST_BOT_ACCESS_TOKEN" $MATTERMOST_POST_API_URL depends_on: - Trigger Portainer stack redeploy when: