diff --git a/README.md b/README.md new file mode 100644 index 0000000..52b95ef --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# 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/.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/) \ No newline at end of file