84 lines
4.1 KiB
Markdown
84 lines
4.1 KiB
Markdown
# L'action `build-pushx-image`
|
||
|
||
Cette action construit une image **multi-architecture** au format **OCI** avec `docker buildx`, puis la **pousse avec `podman`** vers un registre distant.
|
||
Elle est conçue pour fonctionner sur des **runners auto-hébergés**, notamment dans l’environnement **Gitea** de la Petite Maison Orange.
|
||
Elle inclut une **intégration native avec Healthchecks.io** pour monitorer chaque étape du processus.
|
||
|
||
---
|
||
|
||
## 🔧 Utilisation
|
||
|
||
```yaml
|
||
- name: Build and push multiarch image
|
||
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/build-pushx-image@main
|
||
with:
|
||
image_name: my_image
|
||
image_tags: latest stable
|
||
platforms: linux/amd64,linux/arm64
|
||
check_uuid: ${{ secrets.HEALTHCHECK_UUID }}
|
||
```
|
||
|
||
---
|
||
|
||
## 📥 Paramètres
|
||
|
||
| Nom | Obligatoire | Par défaut | Description |
|
||
|----------------------|-------------|-----------------------------------|-----------------------------------------------------------------------------|
|
||
| `image_name` | ✅ | – | Nom de l’image (ex. `myapp/web`). |
|
||
| `image_tags` | ✅ | – | Liste (séparée par des espaces) des tags à appliquer. |
|
||
| `platforms` | ❌ | `linux/amd64` | Plateformes cibles pour `buildx` (ex. `linux/amd64,linux/arm64`). |
|
||
| `registry_server` | ❌ | `niepce.petite-maison-orange.fr` | Serveur de registre distant. |
|
||
| `registry_user` | ❌ | `${{ secrets.PMO_REGISTRY_USER }}` | Utilisateur pour l’authentification au registre. |
|
||
| `registry_password` | ❌ | `${{ secrets.PMO_REGISTRY_PASSWORD }}` | Mot de passe associé à l’utilisateur. |
|
||
| `check_server` | ❌ | `https://haoma.petite-maison-orange.fr` | URL du serveur Healthchecks.io utilisé. |
|
||
| `check_uuid` | ❌ | – | UUID du job Healthchecks.io à monitorer. |
|
||
| `debug` | ❌ | `false` | Active le mode débogage (`true` ou `false`). |
|
||
|
||
---
|
||
|
||
## ▶️ Exemple de workflow
|
||
|
||
```yaml
|
||
jobs:
|
||
build-and-push:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
- name: Build and push image
|
||
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/build-pushx-image@main
|
||
with:
|
||
image_name: mycontainer/web
|
||
image_tags: latest $(date +%Y%m%d)
|
||
platforms: linux/amd64,linux/arm64
|
||
registry_user: ${{ secrets.REGISTRY_USER }}
|
||
registry_password: ${{ secrets.REGISTRY_PASSWORD }}
|
||
check_uuid: ${{ secrets.HEALTHCHECK_UUID }}
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Comportement
|
||
|
||
- L’image est construite avec `docker buildx` pour chaque tag fourni, et exportée au format OCI (`oci_image/<tag>.tar`).
|
||
- Chaque image est poussée avec `podman push` vers le registre Docker.
|
||
- Si le paramétrage `check_uuid` est fourni, chaque étape (début, build, push, succès, échec) est reportée au serveur Healthchecks.io configuré.
|
||
- Le mode `debug` permet d’afficher toutes les étapes internes de façon plus verbeuse, grâce à la lib `bashlib.sh`.
|
||
|
||
---
|
||
|
||
## 🩺 Intégration Healthchecks
|
||
|
||
L’action utilise automatiquement l’action [healthchecks-ping](https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main) pour :
|
||
|
||
- envoyer un `start` en début de build,
|
||
- un `log` pour indiquer le début du build, puis la fin du build,
|
||
- un `stop` en fin de workflow,
|
||
- un `fail` si une étape échoue ou est annulée.
|
||
|
||
---
|
||
|
||
## 🧡 À propos
|
||
|
||
Cette action fait partie des actions de la **Petite Maison Orange**.
|
||
Toutes les actions sont disponibles ici :
|
||
👉 [https://gargoton.petite-maison-orange.fr/pmo-actions/](https://gargoton.petite-maison-orange.fr/pmo-actions/) |