# 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/)