Procházet zdrojové kódy

feat: cache docker layers to registry

Jun Siang Cheah před 1 rokem
rodič
revize
e142223ed1
1 změnil soubory, kde provedl 37 přidání a 7 odebrání
  1. 37 7
      .github/workflows/docker-build.yaml

+ 37 - 7
.github/workflows/docker-build.yaml

@@ -63,6 +63,16 @@ jobs:
           flavor: |
             latest=${{ github.ref == 'refs/heads/main' }}
 
+      - name: Extract metadata for Docker cache
+        id: cache-meta
+        uses: docker/metadata-action@v5
+        with:
+          images: ${{ env.FULL_IMAGE_NAME }}
+          tags: |
+            type=ref,event=branch
+          flavor: |
+            prefix=cache-${{ matrix.platform }}-
+
       - name: Build Docker image (latest)
         uses: docker/build-push-action@v5
         id: build
@@ -72,8 +82,8 @@ jobs:
           platforms: ${{ matrix.platform }}
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
-          cache-from: type=gha
-          cache-to: type=gha,mode=max
+          cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
+          cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
 
       - name: Export digest
         run: |
@@ -123,7 +133,7 @@ jobs:
           username: ${{ github.actor }}
           password: ${{ secrets.GITHUB_TOKEN }}
 
-      - name: Extract metadata for Docker images (default latest tag)
+      - name: Extract metadata for Docker images (cuda tag)
         id: meta
         uses: docker/metadata-action@v5
         with:
@@ -139,6 +149,16 @@ jobs:
             latest=${{ github.ref == 'refs/heads/main' }}
             suffix=-cuda,onlatest=true
 
+      - name: Extract metadata for Docker cache
+        id: cache-meta
+        uses: docker/metadata-action@v5
+        with:
+          images: ${{ env.FULL_IMAGE_NAME }}
+          tags: |
+            type=ref,event=branch
+          flavor: |
+            prefix=cache-cuda-${{ matrix.platform }}-
+
       - name: Build Docker image (cuda)
         uses: docker/build-push-action@v5
         id: build
@@ -148,8 +168,8 @@ jobs:
           platforms: ${{ matrix.platform }}
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
-          cache-from: type=gha
-          cache-to: type=gha,mode=max
+          cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
+          cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
           build-args: USE_CUDA=true
 
       - name: Export digest
@@ -216,6 +236,16 @@ jobs:
             latest=${{ github.ref == 'refs/heads/main' }}
             suffix=-ollama,onlatest=true
 
+      - name: Extract metadata for Docker cache
+        id: cache-meta
+        uses: docker/metadata-action@v5
+        with:
+          images: ${{ env.FULL_IMAGE_NAME }}
+          tags: |
+            type=ref,event=branch
+          flavor: |
+            prefix=cache-ollama-${{ matrix.platform }}-
+
       - name: Build Docker image (ollama)
         uses: docker/build-push-action@v5
         id: build
@@ -225,8 +255,8 @@ jobs:
           platforms: ${{ matrix.platform }}
           labels: ${{ steps.meta.outputs.labels }}
           outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true
-          cache-from: type=gha
-          cache-to: type=gha,mode=max
+          cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }}
+          cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max
           build-args: USE_OLLAMA=true
 
       - name: Export digest