name: Publier l'image Docker (GHCR) on: push: branches: [main] workflow_dispatch: permissions: contents: read packages: write jobs: build-push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 # L'image runtime CUDA de llama.cpp (~4 Go) et Chromium/Playwright # (~1 Go) tiennent large dans les ~14 Go libres d'un runner neuf, mais # ces trois répertoires ne servent à rien ici et rendent une dizaine de # gigaoctets en moins d'une minute. Gardé depuis l'époque où l'image # compilait whisper.cpp avec CUDA : la marge reste bonne à prendre. - name: Libérer de l'espace disque run: | df -h / sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc df -h / - name: Setup Buildx uses: docker/setup-buildx-action@v3 - name: Connexion à GHCR uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Métadonnées (tags / labels) id: meta uses: docker/metadata-action@v5 with: images: ghcr.io/${{ github.repository }} tags: | type=raw,value=latest type=sha,format=short - name: Build & push uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64 push: true build-args: | LOKI_VERSION=${{ github.sha }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # Le cache de couches réutilise l'étape asrfetch (téléchargement du # binaire de dictée) tant que ses lignes du Dockerfile ne bougent # pas : seul le code Go et l'assemblage de l'image se refont. cache-from: type=gha cache-to: type=gha,mode=max