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'étape llama.cpp CUDA a besoin de place : l'image devel pèse ~8 Go et # un runner ubuntu-latest n'offre que ~14 Go libres. On purge ce qui est # préinstallé et inutile ici (SDK Android, .NET, Haskell…). - name: Libérer l'espace disque du runner run: | sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc \ /usr/local/.ghcup /opt/hostedtoolcache/CodeQL sudo docker image prune -af 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 }} CUDA_ARCHS=75;86;89 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # Cache limité : les couches CUDA (plusieurs Go) satureraient le # plafond de 10 Go du cache GitHub Actions — on ne cache que le mode # min (couches finales), le gain principal restant le cache apt/go. cache-from: type=gha cache-to: type=gha,mode=min