|
1 |
| -name: Docker Build, Slim, and Publish |
| 1 | +name: Docker Build and Publish |
2 | 2 |
|
3 | 3 | on:
|
4 | 4 | push:
|
5 |
| - branches: |
6 |
| - - master |
7 | 5 | tags: [ 'v*.*.*' ]
|
8 |
| - # Allow manual trigger from GitHub UI |
9 | 6 | workflow_dispatch:
|
10 | 7 |
|
11 |
| -env: |
12 |
| - REGISTRY: ghcr.io |
13 |
| - IMAGE_NAME: ${{ github.repository }} |
14 |
| - |
15 | 8 | jobs:
|
16 | 9 | build:
|
17 | 10 | runs-on: ubuntu-latest
|
18 | 11 | permissions:
|
19 |
| - contents: read |
| 12 | + contents: write |
20 | 13 | packages: write
|
21 |
| - actions: write |
22 |
| - |
23 | 14 | steps:
|
24 | 15 | - name: Checkout repository
|
25 | 16 | uses: actions/checkout@v4
|
26 | 17 |
|
27 |
| - - name: Log in to the Container registry |
28 |
| - uses: docker/login-action@v3 |
29 |
| - with: |
30 |
| - registry: ${{ env.REGISTRY }} |
31 |
| - username: ${{ github.actor }} |
32 |
| - password: ${{ secrets.GITHUB_TOKEN }} |
| 18 | + - name: Set up QEMU |
| 19 | + uses: docker/setup-qemu-action@v2 |
33 | 20 |
|
34 |
| - # Set up image names (converting to lowercase) |
35 |
| - - name: Set image names |
36 |
| - run: | |
37 |
| - echo "GPU_IMAGE_NAME=${{ env.REGISTRY }}/$(echo ${{ env.IMAGE_NAME }} | tr '[:upper:]' '[:lower:]')-gpu" >> $GITHUB_ENV |
38 |
| - echo "CPU_IMAGE_NAME=${{ env.REGISTRY }}/$(echo ${{ env.IMAGE_NAME }} | tr '[:upper:]' '[:lower:]')-cpu" >> $GITHUB_ENV |
39 |
| - echo "UI_IMAGE_NAME=${{ env.REGISTRY }}/$(echo ${{ env.IMAGE_NAME }} | tr '[:upper:]' '[:lower:]')-ui" >> $GITHUB_ENV |
40 |
| -
|
41 |
| - # Build GPU version |
42 |
| - - name: Build GPU Docker image |
43 |
| - uses: docker/build-push-action@v5 |
44 |
| - with: |
45 |
| - context: . |
46 |
| - file: ./docker/gpu/Dockerfile |
47 |
| - push: false |
48 |
| - load: true |
49 |
| - tags: ${{ env.GPU_IMAGE_NAME }}:v0.1.0 |
50 |
| - build-args: | |
51 |
| - DOCKER_BUILDKIT=1 |
52 |
| - platforms: linux/amd64 |
53 |
| - |
54 |
| - # Slim GPU version |
55 |
| - - name: Slim GPU Docker image |
56 |
| - run: | |
57 |
| - docker pull dslim/slim |
58 |
| - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build \ |
59 |
| - --target ${{ env.GPU_IMAGE_NAME }}:v0.1.0 \ |
60 |
| - --tag ${{ env.GPU_IMAGE_NAME }}:v0.1.0-slim \ |
61 |
| - --include-path=/app/models \ |
62 |
| - --include-path=/app/api/src/voices \ |
63 |
| - --include-path=/app/.venv \ |
64 |
| - --include-bin=/usr/local/cuda/lib64 \ |
65 |
| - --include-bin=/usr/lib/x86_64-linux-gnu/libcudart.so \ |
66 |
| - --include-bin=/usr/lib/x86_64-linux-gnu/libcuda.so \ |
67 |
| - --include-shell \ |
68 |
| - --include-exe=python3,python3.10,espeak-ng \ |
69 |
| - --exclude-mounts=false \ |
70 |
| - --http-probe=false |
71 |
| -
|
72 |
| - # Push GPU versions |
73 |
| - - name: Push GPU Docker images |
74 |
| - run: | |
75 |
| - docker push ${{ env.GPU_IMAGE_NAME }}:v0.1.0 |
76 |
| - docker push ${{ env.GPU_IMAGE_NAME }}:v0.1.0-slim |
77 |
| - docker tag ${{ env.GPU_IMAGE_NAME }}:v0.1.0 ${{ env.GPU_IMAGE_NAME }}:latest |
78 |
| - docker tag ${{ env.GPU_IMAGE_NAME }}:v0.1.0-slim ${{ env.GPU_IMAGE_NAME }}:latest-slim |
79 |
| - docker push ${{ env.GPU_IMAGE_NAME }}:latest |
80 |
| - docker push ${{ env.GPU_IMAGE_NAME }}:latest-slim |
| 21 | + - name: Set up Docker Buildx |
| 22 | + uses: docker/setup-buildx-action@v2 |
81 | 23 |
|
82 |
| - # Build CPU version |
83 |
| - - name: Build CPU Docker image |
84 |
| - uses: docker/build-push-action@v5 |
| 24 | + - name: Log in to GitHub Container Registry |
| 25 | + uses: docker/login-action@v2 |
85 | 26 | with:
|
86 |
| - context: . |
87 |
| - file: ./docker/cpu/Dockerfile |
88 |
| - push: false |
89 |
| - load: true |
90 |
| - tags: ${{ env.CPU_IMAGE_NAME }}:v0.1.0 |
91 |
| - build-args: | |
92 |
| - DOCKER_BUILDKIT=1 |
93 |
| - platforms: linux/amd64 |
94 |
| - |
95 |
| - # Slim CPU version |
96 |
| - - name: Slim CPU Docker image |
97 |
| - run: | |
98 |
| - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dslim/slim build \ |
99 |
| - --target ${{ env.CPU_IMAGE_NAME }}:v0.1.0 \ |
100 |
| - --tag ${{ env.CPU_IMAGE_NAME }}:v0.1.0-slim \ |
101 |
| - --include-path=/app/models \ |
102 |
| - --include-path=/app/api/src/voices \ |
103 |
| - --include-path=/app/.venv \ |
104 |
| - --include-shell \ |
105 |
| - --include-exe=python3,python3.10,espeak-ng \ |
106 |
| - --exclude-mounts=false \ |
107 |
| - --http-probe=false |
| 27 | + registry: ghcr.io |
| 28 | + username: ${{ github.actor }} |
| 29 | + password: ${{ secrets.GITHUB_TOKEN }} |
108 | 30 |
|
109 |
| - # Push CPU versions |
110 |
| - - name: Push CPU Docker images |
| 31 | + - name: Run build script |
111 | 32 | run: |
|
112 |
| - docker push ${{ env.CPU_IMAGE_NAME }}:v0.1.0 |
113 |
| - docker push ${{ env.CPU_IMAGE_NAME }}:v0.1.0-slim |
114 |
| - docker tag ${{ env.CPU_IMAGE_NAME }}:v0.1.0 ${{ env.CPU_IMAGE_NAME }}:latest |
115 |
| - docker tag ${{ env.CPU_IMAGE_NAME }}:v0.1.0-slim ${{ env.CPU_IMAGE_NAME }}:latest-slim |
116 |
| - docker push ${{ env.CPU_IMAGE_NAME }}:latest |
117 |
| - docker push ${{ env.CPU_IMAGE_NAME }}:latest-slim |
118 |
| -
|
119 |
| - # Build and push UI version |
120 |
| - - name: Build and push UI Docker image |
121 |
| - uses: docker/build-push-action@v5 |
122 |
| - with: |
123 |
| - context: ./ui |
124 |
| - file: ./ui/Dockerfile |
125 |
| - push: true |
126 |
| - tags: | |
127 |
| - ${{ env.UI_IMAGE_NAME }}:v0.1.0 |
128 |
| - ${{ env.UI_IMAGE_NAME }}:latest |
129 |
| - build-args: | |
130 |
| - DOCKER_BUILDKIT=1 |
131 |
| - platforms: linux/amd64 |
| 33 | + chmod +x docker/build.sh |
| 34 | + VERSION=$(cat VERSION) |
| 35 | + docker/build.sh $VERSION |
132 | 36 |
|
133 |
| - create-release: |
134 |
| - needs: build |
135 |
| - runs-on: ubuntu-latest |
136 |
| - # Only run this job if we're pushing a tag |
137 |
| - if: startsWith(github.ref, 'refs/tags/') |
138 |
| - permissions: |
139 |
| - contents: write |
140 |
| - packages: write |
141 |
| - steps: |
142 |
| - - name: Checkout code |
143 |
| - uses: actions/checkout@v4 |
144 |
| - |
145 | 37 | - name: Create Release
|
146 | 38 | uses: softprops/action-gh-release@v1
|
147 | 39 | env:
|
148 | 40 | IS_PRERELEASE: ${{ contains(github.ref, '-pre') }}
|
149 | 41 | with:
|
150 | 42 | generate_release_notes: true
|
151 |
| - draft: false |
| 43 | + draft: true |
152 | 44 | prerelease: ${{ contains(github.ref, '-pre') }}
|
0 commit comments