| 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" |
| - "python:3.10.8-slim" |
| 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 |
| |
| github_ref="${{ github.ref }}" |
| branch=${github_ref#*refs/heads/} |
| 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 }} |
|
|