Fedir Zadniprovskyi 2024-05-27
feat: add gha workflow for building and pushing docker images
@aa5390b0727f19da8ad1d4f7a8253f38ab4f489f
.dockerignore
--- .dockerignore
+++ .dockerignore
@@ -10,3 +10,5 @@
 .task
 Taskfile.yaml
 README.md
+.secrets
+.ruff_cache
 
.github/workflows/docker-build-and-push.yaml (added)
+++ .github/workflows/docker-build-and-push.yaml
@@ -0,0 +1,51 @@
+name: docker-build-and-push
+
+on:
+  push:
+    branches:
+      - "master"
+# TODO: releases
+
+jobs:
+  docker:
+    runs-on: ubuntu-22.04
+    strategy:
+      matrix:
+        dockerfile: [Dockerfile.cuda, Dockerfile.cpu]
+        include:
+          - dockerfile: Dockerfile.cuda
+            tag-prefix: cuda
+          - repository-name: Dockerfile.cpu
+            tag-prefix: cpu
+    steps:
+      - uses: actions/checkout@v4
+      - name: Login to Docker Hub
+        uses: docker/login-action@v3
+        with:
+          username: ${{ secrets.DOCKERHUB_USERNAME }}
+          password: ${{ secrets.DOCKERHUB_TOKEN }}
+      - id: meta
+        uses: docker/metadata-action@v5
+        with:
+          images: |
+            fedirz/speaches
+          # https://github.com/docker/metadata-action?tab=readme-ov-file#flavor-input
+          flavor: |
+            latest=false
+            prefix=${{ matrix.tag-prefix }}
+          tags: |
+            type=sha
+      - name: Set up Docker Buildx
+        uses: docker/setup-buildx-action@v3
+      - name: Build and push
+        uses: docker/build-push-action@v5
+        with:
+          context: .
+          file: ${{ matrix.dockerfile }}
+          # push: true
+          # TODO: multi-platform
+          # platforms: linux/amd64,linux/arm64
+          tags: ${{ steps.meta.outputs.tags }}
+          # TODO: cache
+          # cache-from: type=registry,ref=fedirz/speaches:buildcache
+          # cache-to: type=registry,ref=fedirz/speaches:buildcache,mode=max
.gitignore
--- .gitignore
+++ .gitignore
@@ -3,3 +3,5 @@
 tests/data
 .direnv
 .task
+.secrets
+.ruff_cache
flake.nix
--- flake.nix
+++ flake.nix
@@ -18,6 +18,7 @@
           default = pkgs.mkShell {
             nativeBuildInputs = with pkgs; [
               (with python311Packages; huggingface-hub)
+              act
               ffmpeg-full
               go-task
               lsyncd
Add a comment
List