From 712ea7a0c5fd38ab98892fd40472adb45528ff1d Mon Sep 17 00:00:00 2001 From: Juan Sebastian Montoya Date: Wed, 26 Nov 2025 13:23:52 -0500 Subject: [PATCH] Bugfix/deploy to portainer on merge (#12) - Introduced a new step in the CI workflow to trigger a Portainer deployment using a webhook. - Added checks for the presence of the PORTAINER_WEBHOOK_URL secret and handled HTTP response codes from the webhook call. - Ensured that the workflow does not fail if the webhook call is unsuccessful. This enhancement streamlines the deployment process by automating updates to the Portainer stack upon successful CI runs. Reviewed-on: https://git.jusemon.com/jusemon/threejs-test/pulls/12 Co-authored-by: Juan Sebastian Montoya Co-committed-by: Juan Sebastian Montoya --- .forgejo/workflows/ci.yaml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index b2392b2..732623e 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -297,6 +297,38 @@ jobs: echo "✅ Successfully committed and pushed version update to $VERSION" fi + - name: Trigger Portainer Deployment + if: success() + run: | + VERSION="${{ steps.version.outputs.version }}" + WEBHOOK_URL="${{ secrets.PORTAINER_WEBHOOK_URL }}" + + if [[ -z "$WEBHOOK_URL" ]]; then + echo "⚠️ Warning: PORTAINER_WEBHOOK_URL secret not set, skipping webhook call" + exit 0 + fi + + echo "🚀 Triggering Portainer deployment for version $VERSION" + + # Call Portainer webhook to trigger stack update + HTTP_CODE=$(curl -s -o /tmp/webhook_response.txt -w "%{http_code}" -X POST "$WEBHOOK_URL" \ + -H "Content-Type: application/json" \ + --max-time 30) + + if [[ "$HTTP_CODE" -ge 200 && "$HTTP_CODE" -lt 300 ]]; then + echo "✅ Successfully triggered Portainer deployment (HTTP $HTTP_CODE)" + if [[ -f /tmp/webhook_response.txt ]]; then + echo "Response: $(cat /tmp/webhook_response.txt)" + fi + else + echo "⚠️ Warning: Webhook call returned HTTP $HTTP_CODE" + if [[ -f /tmp/webhook_response.txt ]]; then + echo "Response: $(cat /tmp/webhook_response.txt)" + fi + # Don't fail the workflow if webhook fails + exit 0 + fi + - name: Job Summary if: success() run: |