Actualiser .gitea/workflows/ci.yml
This commit is contained in:
+7
-32
@@ -63,9 +63,7 @@ jobs:
|
||||
run: |
|
||||
echo "--- 1. Authentification ---"
|
||||
printf '{"username":"%s","password":"%s"}' "${{ secrets.PORTAINER_USER }}" "${{ secrets.PORTAINER_PASS }}" > auth.json
|
||||
TOKEN=$(curl -s -k -X POST "${PORTAINER_API}/auth" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @auth.json | grep -o '"jwt":"[^"]*"' | cut -d'"' -f4)
|
||||
TOKEN=$(curl -s -k -X POST "${PORTAINER_API}/auth" -H "Content-Type: application/json" -d @auth.json | grep -o '"jwt":"[^"]*"' | cut -d'"' -f4)
|
||||
rm -f auth.json
|
||||
|
||||
if [ -z "$TOKEN" ]; then
|
||||
@@ -75,54 +73,31 @@ jobs:
|
||||
echo "Authentification réussie"
|
||||
|
||||
echo "--- 2. Récupération des IDs ---"
|
||||
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)
|
||||
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)
|
||||
echo "Endpoint ID : $ENDPOINT_ID"
|
||||
|
||||
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)
|
||||
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)
|
||||
echo "Stack ID : $STACK_ID"
|
||||
|
||||
echo "--- 3. Génération du Payload ---"
|
||||
node -e '
|
||||
const fs = require("fs");
|
||||
const compose = fs.readFileSync("docker-compose.yml", "utf8");
|
||||
const payload = {
|
||||
stackFileContent: compose,
|
||||
pullImage: true,
|
||||
prune: true
|
||||
};
|
||||
const payload = { stackFileContent: compose, pullImage: true, prune: true };
|
||||
fs.writeFileSync("payload.json", JSON.stringify(payload));
|
||||
console.log("Payload size:", JSON.stringify(payload).length, "bytes");
|
||||
'
|
||||
|
||||
echo "--- 4. Envoi à Portainer ---"
|
||||
RESPONSE=$(curl -s -k \
|
||||
--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)
|
||||
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)
|
||||
|
||||
echo "HTTP Code : $RESPONSE"
|
||||
echo "Réponse Portainer :"
|
||||
cat response_body.json
|
||||
|
||||
if [ "$RESPONSE" = "200" ]; then
|
||||
echo "DEPLOIEMENT REUSSI - Frontend: 3026 / Backend: 8025"
|
||||
echo "✅ DEPLOIEMENT REUSSI - Frontend: 3026 / Backend: 8025"
|
||||
else
|
||||
echo "Erreur Portainer (Code HTTP $RESPONSE)"
|
||||
echo "❌ ECHEC - Erreur Portainer (Code HTTP $RESPONSE)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user