fix: registration Consul via docker exec sonic-consul (supprime register-consul step)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- write-env ecrit le token dans .consul_token (workspace partage) - deploy lit .consul_token et utilise docker exec sonic-consul pour enregistrer le service directement sur l'agent consul local - network_mode host non supporte par ce Woodpecker, 172.17.0.1:8500 ne rejoignait pas le meme consul que Fabio Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -32,7 +32,7 @@ steps:
|
||||
- 'grep -q "^\.env$" .gitignore || (echo "ERREUR: .env manquant dans .gitignore" && exit 1)'
|
||||
- echo "Verifications de securite OK"
|
||||
|
||||
# Etape 3a : Ecriture du .env depuis les secrets
|
||||
# Etape 3a : Ecriture du .env et du token Consul depuis les secrets
|
||||
# NOTE: ne pas utiliser ${VAR} dans commands (bug Woodpecker next), utiliser env | grep
|
||||
- name: write-env
|
||||
image: alpine:3.20
|
||||
@@ -50,11 +50,16 @@ steps:
|
||||
from_secret: db_root_password
|
||||
DB_PASSWORD:
|
||||
from_secret: db_password
|
||||
CONSUL_TOKEN:
|
||||
from_secret: consul_token
|
||||
commands:
|
||||
- env | grep -E "^(PS_DOMAIN|PS_ADMIN_FOLDER|PRESTASHOP_ADMIN_EMAIL|PRESTASHOP_ADMIN_PASSWORD|DB_ROOT_PASSWORD|DB_PASSWORD)=" > .env.deploy
|
||||
- echo "Fichier .env.deploy cree ($(wc -c < .env.deploy) octets)"
|
||||
- env | grep '^CONSUL_TOKEN=' | cut -d= -f2- > .consul_token
|
||||
|
||||
# Etape 3b : Deploiement sur sonic via Docker socket
|
||||
# Etape 3b : Deploiement sur sonic via Docker socket + enregistrement Consul
|
||||
# Le token est lu depuis .consul_token (ecrit par write-env) car
|
||||
# volumes + from_secret = secrets vides (bug Woodpecker next)
|
||||
- name: deploy
|
||||
image: docker:27-cli
|
||||
volumes:
|
||||
@@ -67,28 +72,13 @@ steps:
|
||||
- cd /opt/prestashop && docker compose pull
|
||||
- cd /opt/prestashop && docker compose up -d --remove-orphans
|
||||
- cd /opt/prestashop && docker compose ps
|
||||
- docker inspect prestashop --format '{{.NetworkSettings.Networks.sonic.IPAddress}}' > $CI_WORKSPACE/.container_ip
|
||||
|
||||
# Etape 3c : Enregistrement dans Consul (Registrator ne peut pas ecrire prestashop : ACL)
|
||||
# network_mode host : localhost:8500 = consul reel (172.17.0.1 passe par iptables DOCKER)
|
||||
- name: register-consul
|
||||
image: alpine:3.20
|
||||
network_mode: host
|
||||
environment:
|
||||
TEST_STATIC: hello
|
||||
CONSUL_TOKEN:
|
||||
from_secret: consul_token
|
||||
commands:
|
||||
- apk add --no-cache --quiet curl
|
||||
- |
|
||||
CONTAINER_IP=$(cat $CI_WORKSPACE/.container_ip)
|
||||
DOMAIN=$(grep '^PS_DOMAIN=' $CI_WORKSPACE/.env.deploy | cut -d= -f2)
|
||||
CTOK=$(env | grep '^CONSUL_TOKEN=' | cut -d= -f2-)
|
||||
curl -sf -X PUT "http://localhost:8500/v1/agent/service/register" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Consul-Token: $CTOK" \
|
||||
-d "{\"Name\":\"prestashop\",\"Address\":\"$CONTAINER_IP\",\"Port\":80,\"Tags\":[\"urlprefix-$DOMAIN/\"]}"
|
||||
echo "Service enregistre dans Consul: prestashop -> $CONTAINER_IP:80 urlprefix-$DOMAIN/"
|
||||
CONTAINER_IP=$(docker inspect prestashop --format '{{.NetworkSettings.Networks.sonic.IPAddress}}')
|
||||
DOMAIN=$(grep '^PS_DOMAIN=' /opt/prestashop/.env | cut -d= -f2)
|
||||
CTOK=$(cat $CI_WORKSPACE/.consul_token)
|
||||
docker exec sonic-consul env CONSUL_HTTP_TOKEN="$CTOK" consul services register \
|
||||
-address "$CONTAINER_IP" -port 80 -name prestashop -tag "urlprefix-$DOMAIN/"
|
||||
echo "Consul: prestashop -> $CONTAINER_IP:80 urlprefix-$DOMAIN/"
|
||||
|
||||
# Etape 4 : Healthcheck post-deploiement
|
||||
- name: healthcheck
|
||||
|
||||
Reference in New Issue
Block a user