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)'
|
- 'grep -q "^\.env$" .gitignore || (echo "ERREUR: .env manquant dans .gitignore" && exit 1)'
|
||||||
- echo "Verifications de securite OK"
|
- 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
|
# NOTE: ne pas utiliser ${VAR} dans commands (bug Woodpecker next), utiliser env | grep
|
||||||
- name: write-env
|
- name: write-env
|
||||||
image: alpine:3.20
|
image: alpine:3.20
|
||||||
@@ -50,11 +50,16 @@ steps:
|
|||||||
from_secret: db_root_password
|
from_secret: db_root_password
|
||||||
DB_PASSWORD:
|
DB_PASSWORD:
|
||||||
from_secret: db_password
|
from_secret: db_password
|
||||||
|
CONSUL_TOKEN:
|
||||||
|
from_secret: consul_token
|
||||||
commands:
|
commands:
|
||||||
- env | grep -E "^(PS_DOMAIN|PS_ADMIN_FOLDER|PRESTASHOP_ADMIN_EMAIL|PRESTASHOP_ADMIN_PASSWORD|DB_ROOT_PASSWORD|DB_PASSWORD)=" > .env.deploy
|
- 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)"
|
- 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
|
- name: deploy
|
||||||
image: docker:27-cli
|
image: docker:27-cli
|
||||||
volumes:
|
volumes:
|
||||||
@@ -67,28 +72,13 @@ steps:
|
|||||||
- cd /opt/prestashop && docker compose pull
|
- cd /opt/prestashop && docker compose pull
|
||||||
- cd /opt/prestashop && docker compose up -d --remove-orphans
|
- cd /opt/prestashop && docker compose up -d --remove-orphans
|
||||||
- cd /opt/prestashop && docker compose ps
|
- 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)
|
CONTAINER_IP=$(docker inspect prestashop --format '{{.NetworkSettings.Networks.sonic.IPAddress}}')
|
||||||
DOMAIN=$(grep '^PS_DOMAIN=' $CI_WORKSPACE/.env.deploy | cut -d= -f2)
|
DOMAIN=$(grep '^PS_DOMAIN=' /opt/prestashop/.env | cut -d= -f2)
|
||||||
CTOK=$(env | grep '^CONSUL_TOKEN=' | cut -d= -f2-)
|
CTOK=$(cat $CI_WORKSPACE/.consul_token)
|
||||||
curl -sf -X PUT "http://localhost:8500/v1/agent/service/register" \
|
docker exec sonic-consul env CONSUL_HTTP_TOKEN="$CTOK" consul services register \
|
||||||
-H "Content-Type: application/json" \
|
-address "$CONTAINER_IP" -port 80 -name prestashop -tag "urlprefix-$DOMAIN/"
|
||||||
-H "X-Consul-Token: $CTOK" \
|
echo "Consul: prestashop -> $CONTAINER_IP:80 urlprefix-$DOMAIN/"
|
||||||
-d "{\"Name\":\"prestashop\",\"Address\":\"$CONTAINER_IP\",\"Port\":80,\"Tags\":[\"urlprefix-$DOMAIN/\"]}"
|
|
||||||
echo "Service enregistre dans Consul: prestashop -> $CONTAINER_IP:80 urlprefix-$DOMAIN/"
|
|
||||||
|
|
||||||
# Etape 4 : Healthcheck post-deploiement
|
# Etape 4 : Healthcheck post-deploiement
|
||||||
- name: healthcheck
|
- name: healthcheck
|
||||||
|
|||||||
Reference in New Issue
Block a user