Actualiser .gitea/workflows/ci.yml
CI-CD NDF Complet / test-and-quality (push) Successful in 1m18s
CI-CD NDF Complet / deploy (push) Failing after 2m25s

This commit is contained in:
2026-05-29 11:41:14 +02:00
parent af414beabd
commit 9b3e31fec7
+7 -32
View File
@@ -63,9 +63,7 @@ jobs:
run: | run: |
echo "--- 1. Authentification ---" echo "--- 1. Authentification ---"
printf '{"username":"%s","password":"%s"}' "${{ secrets.PORTAINER_USER }}" "${{ secrets.PORTAINER_PASS }}" > auth.json printf '{"username":"%s","password":"%s"}' "${{ secrets.PORTAINER_USER }}" "${{ secrets.PORTAINER_PASS }}" > auth.json
TOKEN=$(curl -s -k -X POST "${PORTAINER_API}/auth" \ TOKEN=$(curl -s -k -X POST "${PORTAINER_API}/auth" -H "Content-Type: application/json" -d @auth.json | grep -o '"jwt":"[^"]*"' | cut -d'"' -f4)
-H "Content-Type: application/json" \
-d @auth.json | grep -o '"jwt":"[^"]*"' | cut -d'"' -f4)
rm -f auth.json rm -f auth.json
if [ -z "$TOKEN" ]; then if [ -z "$TOKEN" ]; then
@@ -75,54 +73,31 @@ jobs:
echo "Authentification réussie" echo "Authentification réussie"
echo "--- 2. Récupération des IDs ---" echo "--- 2. Récupération des IDs ---"
ENDPOINT_ID=$(curl -s -k \ ENDPOINT_ID=$(curl -s -k -H "Authorization: Bearer $TOKEN" "${PORTAINER_API}/endpoints" | grep -o '"Id":[0-9]*,"Name":"myportainer-cgy-dev"' | grep -o '[0-9]*' | head -n 1)
-H "Authorization: Bearer $TOKEN" \
"${PORTAINER_API}/endpoints" \
| grep -o '"Id":[0-9]*,"Name":"myportainer-cgy-dev"' \
| grep -o '[0-9]*' | head -n 1)
echo "Endpoint ID : $ENDPOINT_ID" echo "Endpoint ID : $ENDPOINT_ID"
STACK_ID=$(curl -s -k \ STACK_ID=$(curl -s -k -H "Authorization: Bearer $TOKEN" "${PORTAINER_API}/stacks" | grep -o '"Id":[0-9]*,"Name":"gitea-action-dev"' | grep -o '[0-9]*' | head -n 1)
-H "Authorization: Bearer $TOKEN" \
"${PORTAINER_API}/stacks" \
| grep -o '"Id":[0-9]*,"Name":"gitea-action-dev"' \
| grep -o '[0-9]*' | head -n 1)
echo "Stack ID : $STACK_ID" echo "Stack ID : $STACK_ID"
echo "--- 3. Génération du Payload ---" echo "--- 3. Génération du Payload ---"
node -e ' node -e '
const fs = require("fs"); const fs = require("fs");
const compose = fs.readFileSync("docker-compose.yml", "utf8"); const compose = fs.readFileSync("docker-compose.yml", "utf8");
const payload = { const payload = { stackFileContent: compose, pullImage: true, prune: true };
stackFileContent: compose,
pullImage: true,
prune: true
};
fs.writeFileSync("payload.json", JSON.stringify(payload)); fs.writeFileSync("payload.json", JSON.stringify(payload));
console.log("Payload size:", JSON.stringify(payload).length, "bytes"); console.log("Payload size:", JSON.stringify(payload).length, "bytes");
' '
echo "--- 4. Envoi à Portainer ---" echo "--- 4. Envoi à Portainer ---"
RESPONSE=$(curl -s -k \ RESPONSE=$(curl -s -k --max-time 300 --retry 3 --retry-delay 10 --retry-all-errors -o response_body.json -w "%{http_code}" -X PUT "${PORTAINER_API}/stacks/${STACK_ID}?endpointId=${ENDPOINT_ID}" -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json" -d @payload.json)
--max-time 300 # attend jusqu'à 5 minutes
--retry 3 # réessaie 3 fois si échec
--retry-delay 10 # attend 10 secondes entre chaque tentative
--retry-all-errors # réessaie même sur les erreurs 5xx comme le 504
-o response_body.json \
-w "%{http_code}" \
-X PUT "${PORTAINER_API}/stacks/${STACK_ID}?endpointId=${ENDPOINT_ID}" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d @payload.json)
echo "HTTP Code : $RESPONSE" echo "HTTP Code : $RESPONSE"
echo "Réponse Portainer :"
cat response_body.json cat response_body.json
if [ "$RESPONSE" = "200" ]; then if [ "$RESPONSE" = "200" ]; then
echo "DEPLOIEMENT REUSSI - Frontend: 3026 / Backend: 8025" echo "DEPLOIEMENT REUSSI - Frontend: 3026 / Backend: 8025"
else else
echo "Erreur Portainer (Code HTTP $RESPONSE)" echo "❌ ECHEC - Erreur Portainer (Code HTTP $RESPONSE)"
exit 1 exit 1
fi fi