Spaces:
Paused
Paused
name: "Docker build and push" | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- dev | |
tags: | |
- v* | |
jobs: | |
docker-build: | |
name: "Build and push Docker image" | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
arch: ["amd64"] | |
base: | |
- "nvidia/cuda:11.8.0-base-ubuntu22.04" # GPU enabled | |
- "python:3.10.8-slim" # CPU only | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Log in to the Container registry | |
uses: docker/login-action@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Compute Docker tags, check VERSION file matches tag | |
id: compute-tag | |
run: | | |
set -ex | |
base="ghcr.io/coqui-ai/tts" | |
tags="" # PR build | |
if [[ ${{ matrix.base }} = "python:3.10.8-slim" ]]; then | |
base="ghcr.io/coqui-ai/tts-cpu" | |
fi | |
if [[ "${{ startsWith(github.ref, 'refs/heads/') }}" = "true" ]]; then | |
# Push to branch | |
github_ref="${{ github.ref }}" | |
branch=${github_ref#*refs/heads/} # strip prefix to get branch name | |
tags="${base}:${branch},${base}:${{ github.sha }}," | |
elif [[ "${{ startsWith(github.ref, 'refs/tags/') }}" = "true" ]]; then | |
VERSION="v$(cat TTS/VERSION)" | |
if [[ "${{ github.ref }}" != "refs/tags/${VERSION}" ]]; then | |
echo "Pushed tag does not match VERSION file. Aborting push." | |
exit 1 | |
fi | |
tags="${base}:${VERSION},${base}:latest,${base}:${{ github.sha }}" | |
fi | |
echo "::set-output name=tags::${tags}" | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build and push | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
platforms: linux/${{ matrix.arch }} | |
push: ${{ github.event_name == 'push' }} | |
build-args: "BASE=${{ matrix.base }}" | |
tags: ${{ steps.compute-tag.outputs.tags }} | |