Site public sur www.gsoftware.ch, gsoftware.ch y renvoie
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
Le projet d'essai devient frontpage : page d'accueil provisoire servie sur www.gsoftware.ch, redirection permanente depuis gsoftware.ch, pile webapp-frontpage.
This commit is contained in:
+7
-7
@@ -1,6 +1,6 @@
|
||||
# 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.
|
||||
# Construit l'image du site et la déploie 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. Aucun secret requis.
|
||||
when:
|
||||
- event: [push, manual]
|
||||
branch: main
|
||||
@@ -10,8 +10,8 @@ steps:
|
||||
image: docker:29-cli
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- /docker/stacks/webapp-essai:/docker/stacks/webapp-essai
|
||||
- /docker/stacks/webapp-frontpage:/docker/stacks/webapp-frontpage
|
||||
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
|
||||
- docker build --build-arg COMMIT=${CI_COMMIT_SHA:0:8} --build-arg DATE="$(date -u '+%d.%m.%Y %H:%M UTC')" -t frontpage:${CI_COMMIT_SHA:0:8} -t frontpage:latest .
|
||||
- cp deploy/compose.yaml /docker/stacks/webapp-frontpage/compose.yaml
|
||||
- docker compose -f /docker/stacks/webapp-frontpage/compose.yaml -p webapp-frontpage up -d --force-recreate
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
# essai
|
||||
# frontpage
|
||||
|
||||
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/).
|
||||
Le site public de `gsoftware.ch`, servi sur [www.gsoftware.ch](https://www.gsoftware.ch/). L'adresse sans `www` y renvoie par une redirection permanente.
|
||||
|
||||
À chaque poussée sur `main`, le pipeline (`.woodpecker.yml`) :
|
||||
Aujourd'hui, une page d'accueil provisoire : elle valide la chaîne de déploiement de la machine `gsoftware`, et attend le vrai contenu du site.
|
||||
|
||||
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 ;
|
||||
## Déploiement
|
||||
|
||||
À chaque poussée sur `main`, Woodpecker (`.woodpecker.yml`) :
|
||||
|
||||
1. construit l'image `frontpage` à partir du `Dockerfile`, en y inscrivant le commit et l'heure ;
|
||||
2. dépose `deploy/compose.yaml` dans `/docker/stacks/webapp-frontpage/` 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 pied de page indique le commit déployé : s'il 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.
|
||||
Le pipeline monte le socket Docker de la machine : le dépôt est marqué « de confiance » (volumes) dans Woodpecker. Aucun secret n'est nécessaire.
|
||||
|
||||
Créé le 22.10.2026, à la construction de `gsoftware`. Il peut servir de modèle pour un premier projet, ou être supprimé.
|
||||
## Modifier le site
|
||||
|
||||
Remplacer le contenu de `index.html` (ou ajouter des fichiers, et les copier dans le `Dockerfile`), pousser sur `main`.
|
||||
|
||||
+35
-16
@@ -1,27 +1,46 @@
|
||||
# Pile de la page d'essai, déposée par le pipeline dans
|
||||
# /docker/stacks/webapp-essai/ puis relancée.
|
||||
# Pile du site public, déposée par le pipeline dans
|
||||
# /docker/stacks/webapp-frontpage/ puis relancée.
|
||||
#
|
||||
# www.gsoftware.ch sert le site ; gsoftware.ch y renvoie (301).
|
||||
# Dans les labels, « $$ » est un « $ » échappé pour Compose.
|
||||
services:
|
||||
webapp-essai:
|
||||
image: essai:latest
|
||||
webapp-frontpage:
|
||||
image: frontpage: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
|
||||
# www.gsoftware.ch : le site
|
||||
- traefik.http.routers.webapp-frontpage-http.rule=Host(`www.gsoftware.ch`)
|
||||
- traefik.http.routers.webapp-frontpage-http.entrypoints=web
|
||||
- traefik.http.routers.webapp-frontpage-http.middlewares=redirect-to-https@file
|
||||
- traefik.http.routers.webapp-frontpage-https.rule=Host(`www.gsoftware.ch`)
|
||||
- traefik.http.routers.webapp-frontpage-https.entrypoints=websecure
|
||||
- traefik.http.routers.webapp-frontpage-https.middlewares=security-headers@file
|
||||
- traefik.http.routers.webapp-frontpage-https.tls.certresolver=le-http
|
||||
- traefik.http.routers.webapp-frontpage-https.service=webapp-frontpage
|
||||
- traefik.http.services.webapp-frontpage.loadbalancer.server.port=80
|
||||
# gsoftware.ch : redirection permanente vers www, en http comme en https
|
||||
- traefik.http.middlewares.frontpage-vers-www.redirectregex.regex=^https?://gsoftware\.ch/(.*)
|
||||
- traefik.http.middlewares.frontpage-vers-www.redirectregex.replacement=https://www.gsoftware.ch/$${1}
|
||||
- traefik.http.middlewares.frontpage-vers-www.redirectregex.permanent=true
|
||||
- traefik.http.routers.webapp-frontpage-nu-http.rule=Host(`gsoftware.ch`)
|
||||
- traefik.http.routers.webapp-frontpage-nu-http.entrypoints=web
|
||||
- traefik.http.routers.webapp-frontpage-nu-http.middlewares=frontpage-vers-www
|
||||
- traefik.http.routers.webapp-frontpage-nu-http.service=webapp-frontpage
|
||||
- traefik.http.routers.webapp-frontpage-nu-https.rule=Host(`gsoftware.ch`)
|
||||
- traefik.http.routers.webapp-frontpage-nu-https.entrypoints=websecure
|
||||
- traefik.http.routers.webapp-frontpage-nu-https.middlewares=frontpage-vers-www
|
||||
- traefik.http.routers.webapp-frontpage-nu-https.tls.certresolver=le-http
|
||||
- traefik.http.routers.webapp-frontpage-nu-https.service=webapp-frontpage
|
||||
# Homepage
|
||||
- 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
|
||||
- homepage.name=Site public
|
||||
- homepage.icon=mdi-web
|
||||
- homepage.href=https://www.gsoftware.ch/
|
||||
- homepage.description=gsoftware.ch · frontpage
|
||||
networks:
|
||||
- frontend
|
||||
networks:
|
||||
|
||||
+11
-8
@@ -3,18 +3,21 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>gsoftware — essai</title>
|
||||
<title>gsoftware</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; }
|
||||
:root { color-scheme: light dark; }
|
||||
body { font-family: system-ui, sans-serif; margin: 0; min-height: 100vh; display: flex; flex-direction: column; }
|
||||
main { flex: 1; display: flex; flex-direction: column; justify-content: center; max-width: 40rem; margin: 0 auto; padding: 2rem 1rem; }
|
||||
h1 { font-size: 2.4rem; margin: 0 0 .5rem; }
|
||||
p { font-size: 1.1rem; line-height: 1.5; }
|
||||
footer { font-size: .8rem; opacity: .6; text-align: center; padding: 1rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<main>
|
||||
<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>
|
||||
<p>Site en construction.</p>
|
||||
</main>
|
||||
<footer>Déployé le __DATE__ · commit __COMMIT__</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user