Page d'essai et pipeline de déploiement

This commit is contained in:
2026-10-22 13:36:21 +02:00
commit 35193a1411
5 changed files with 86 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
# Construit l'image et déploie la page sur la machine elle-même.
# Le dépôt doit être « de confiance » (volumes) dans Woodpecker : le
# pas monte le socket Docker et le dossier de la pile.
when:
- event: [push, manual]
branch: main
steps:
- name: construire-et-deployer
image: docker:29-cli
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /docker/stacks/webapp-essai:/docker/stacks/webapp-essai
commands:
- docker build --build-arg COMMIT=${CI_COMMIT_SHA:0:8} --build-arg DATE="$(date '+%d.%m.%Y %H:%M')" -t essai:${CI_COMMIT_SHA:0:8} -t essai:latest .
- cp deploy/compose.yaml /docker/stacks/webapp-essai/compose.yaml
- docker compose -f /docker/stacks/webapp-essai/compose.yaml -p webapp-essai up -d --force-recreate
+5
View File
@@ -0,0 +1,5 @@
FROM nginx:1.29-alpine
ARG COMMIT=inconnu
ARG DATE=inconnue
COPY index.html /usr/share/nginx/html/index.html
RUN sed -i "s/__COMMIT__/${COMMIT}/; s/__DATE__/${DATE}/" /usr/share/nginx/html/index.html
+15
View File
@@ -0,0 +1,15 @@
# essai
Projet de validation de la chaîne de `gsoftware` : un dépôt sur sa Gitea, un pipeline sur son Woodpecker, une page servie par son Traefik sur [essai.gsoftware.ch](https://essai.gsoftware.ch/).
À chaque poussée sur `main`, le pipeline (`.woodpecker.yml`) :
1. construit l'image `essai` à partir du `Dockerfile`, en y inscrivant le commit ;
2. dépose `deploy/compose.yaml` dans `/docker/stacks/webapp-essai/` sur la machine ;
3. relance la pile.
La page affiche le commit déployé : si elle change après une poussée, toute la chaîne fonctionne.
Le pipeline monte le socket Docker de la machine : le dépôt doit être marqué « de confiance » (volumes) dans Woodpecker.
Créé le 22.10.2026, à la construction de `gsoftware`. Il peut servir de modèle pour un premier projet, ou être supprimé.
+29
View File
@@ -0,0 +1,29 @@
# Pile de la page d'essai, déposée par le pipeline dans
# /docker/stacks/webapp-essai/ puis relancée.
services:
webapp-essai:
image: essai:latest
pull_policy: never
restart: unless-stopped
expose:
- "80"
labels:
- traefik.enable=true
- traefik.http.routers.webapp-essai-http.rule=Host(`essai.gsoftware.ch`)
- traefik.http.routers.webapp-essai-http.entrypoints=web
- traefik.http.routers.webapp-essai-http.middlewares=redirect-to-https@file
- traefik.http.routers.webapp-essai-https.rule=Host(`essai.gsoftware.ch`)
- traefik.http.routers.webapp-essai-https.entrypoints=websecure
- traefik.http.routers.webapp-essai-https.middlewares=security-headers@file
- traefik.http.routers.webapp-essai-https.tls.certresolver=le-http
- traefik.http.services.webapp-essai.loadbalancer.server.port=80
- homepage.group=Projets
- homepage.name=Essai
- homepage.icon=mdi-check-circle-outline
- homepage.href=https://essai.gsoftware.ch/
- homepage.description=Page de validation de la chaîne CI/CD
networks:
- frontend
networks:
frontend:
external: true
+20
View File
@@ -0,0 +1,20 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>gsoftware — essai</title>
<style>
body { font-family: system-ui, sans-serif; max-width: 40rem; margin: 4rem auto; padding: 0 1rem; color: #1d2b36; }
h1 { font-size: 1.6rem; }
code { background: #eef2f5; padding: .1rem .3rem; border-radius: .2rem; }
.ok { color: #1b7f3b; font-weight: 600; }
</style>
</head>
<body>
<h1>gsoftware</h1>
<p class="ok">La chaîne fonctionne.</p>
<p>Cette page a été construite par Woodpecker à partir du dépôt <code>admin/essai</code> de la Gitea de gsoftware, puis déployée sur la machine et servie par son Traefik.</p>
<p>Commit déployé : <code>__COMMIT__</code><br>Construite le : <code>__DATE__</code></p>
</body>
</html>