diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 5496006..755c129 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -2,13 +2,10 @@ name: Build and Push Docker Images on: push: - branches: - - main - tags: - - "v*" + branches: [main] + tags: ["v*"] pull_request: - branches: - - main + branches: [main] workflow_dispatch: env: @@ -16,12 +13,21 @@ env: IMAGE_NAME: ${{ github.repository }} jobs: - build-gpu: - name: Build GPU (CUDA) Image + build: + name: Build ${{ matrix.variant }} Image runs-on: ubuntu-latest permissions: contents: read packages: write + + strategy: + fail-fast: false + matrix: + include: + - variant: gpu + file: Dockerfile.gpu + - variant: cpu + file: Dockerfile.cpu steps: - name: Checkout repository @@ -44,110 +50,19 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | - type=ref,event=branch,suffix=-gpu - type=semver,pattern={{version}},suffix=-gpu - type=semver,pattern={{major}}.{{minor}},suffix=-gpu - type=raw,value=latest-gpu,enable={{is_default_branch}} - type=sha,suffix=-gpu + type=ref,event=branch,suffix=-${{ matrix.variant }} + type=semver,pattern={{version}},suffix=-${{ matrix.variant }} + type=semver,pattern={{major}}.{{minor}},suffix=-${{ matrix.variant }} + type=raw,value=latest-${{ matrix.variant }},enable={{is_default_branch}} + type=sha,suffix=-${{ matrix.variant }} - - name: Build and push GPU image + - name: Build and push uses: docker/build-push-action@v6 with: context: . - file: Dockerfile.gpu + file: ${{ matrix.file }} push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - - build-cpu: - name: Build CPU Image - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to GitHub Container Registry - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch,suffix=-cpu - type=semver,pattern={{version}},suffix=-cpu - type=semver,pattern={{major}}.{{minor}},suffix=-cpu - type=raw,value=latest-cpu,enable={{is_default_branch}} - type=sha,suffix=-cpu - - - name: Build and push CPU image - uses: docker/build-push-action@v6 - with: - context: . - file: Dockerfile.cpu - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - - build-rocm: - name: Build GPU (ROCm) Image - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to GitHub Container Registry - if: github.event_name != 'pull_request' - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch,suffix=-rocm - type=semver,pattern={{version}},suffix=-rocm - type=semver,pattern={{major}}.{{minor}},suffix=-rocm - type=raw,value=latest-rocm,enable={{is_default_branch}} - type=sha,suffix=-rocm - - - name: Build and push ROCm image - uses: docker/build-push-action@v6 - with: - context: . - file: Dockerfile.gpu-rocm - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max -