| name: Build and Publish Docker Image |
|
|
| on: |
| workflow_dispatch: |
| push: |
| branches: |
| - 'main' |
| release: |
| types: [published] |
|
|
| jobs: |
| build-and-push-image: |
| runs-on: ubuntu-latest |
|
|
| permissions: |
| contents: read |
| packages: write |
|
|
| env: |
| |
| DOCKER_REGISTRY: ghcr.io |
| IMAGE_NAME: ${{ github.repository }} |
| TAG: ${{ github.sha }} |
|
|
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
|
|
| - name: Free Disk Space Before Build |
| run: | |
| sudo rm -rf /usr/local/.ghcup |
| sudo rm -rf /opt/hostedtoolcache/CodeQL |
| sudo rm -rf /usr/local/lib/android |
| sudo rm -rf /usr/share/dotnet |
| sudo rm -rf /opt/ghc |
| sudo rm -rf /usr/local/share/boost |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v2 |
| with: |
| install: true |
|
|
| |
| - name: Login to Docker Registry |
| uses: docker/login-action@v2 |
| with: |
| registry: ${{ env.DOCKER_REGISTRY }} |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Extract metadata (tags, labels) for Docker |
| id: meta |
| uses: docker/metadata-action@v4 |
| with: |
| images: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }} |
|
|
| |
| - name: Build and Push Docker Image |
| if: github.ref == 'refs/heads/main' |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
|
|
| |
| - name: Build and Push Docker Image (Tagged) |
| if: startsWith(github.ref, 'refs/tags/') |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
|
|
| build-and-push-image-min: |
| runs-on: ubuntu-latest |
|
|
| permissions: |
| contents: read |
| packages: write |
|
|
| env: |
| |
| DOCKER_REGISTRY: ghcr.io |
| IMAGE_NAME: ${{ github.repository }}-min |
| TAG: ${{ github.sha }} |
|
|
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
|
|
| - name: Free Disk Space Before Build |
| run: | |
| sudo rm -rf /usr/local/.ghcup |
| sudo rm -rf /opt/hostedtoolcache/CodeQL |
| sudo rm -rf /usr/local/lib/android |
| sudo rm -rf /usr/share/dotnet |
| sudo rm -rf /opt/ghc |
| sudo rm -rf /usr/local/share/boost |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v2 |
| with: |
| install: true |
|
|
| |
| - name: Login to Docker Registry |
| uses: docker/login-action@v2 |
| with: |
| registry: ${{ env.DOCKER_REGISTRY }} |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Extract metadata (tags, labels) for Docker |
| id: meta |
| uses: docker/metadata-action@v4 |
| with: |
| images: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }} |
|
|
| |
| - name: Build and Push Docker Image |
| if: github.ref == 'refs/heads/main' |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile.min |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
|
|
| |
| - name: Build and Push Docker Image (Tagged) |
| if: startsWith(github.ref, 'refs/tags/') |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile.min |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
|
|
| build-and-push-image-rocm: |
| runs-on: ubuntu-latest |
|
|
| permissions: |
| contents: read |
| packages: write |
|
|
| env: |
| |
| USE_ROCM: 1 |
| DOCKER_REGISTRY: ghcr.io |
| IMAGE_NAME: ${{ github.repository }}-rocm |
| TAG: ${{ github.sha }} |
|
|
| steps: |
| - name: Check out code |
| uses: actions/checkout@v4 |
|
|
| - name: Free Disk Space Before Build |
| run: | |
| sudo rm -rf /usr/local/.ghcup |
| sudo rm -rf /opt/hostedtoolcache/CodeQL |
| sudo rm -rf /usr/local/lib/android |
| sudo rm -rf /usr/share/dotnet |
| sudo rm -rf /opt/ghc |
| sudo rm -rf /usr/local/share/boost |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v2 |
| with: |
| install: true |
|
|
| |
| - name: Login to Docker Registry |
| uses: docker/login-action@v2 |
| with: |
| registry: ${{ env.DOCKER_REGISTRY }} |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Extract metadata (tags, labels) for Docker |
| id: meta |
| uses: docker/metadata-action@v4 |
| with: |
| images: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }} |
|
|
| |
| - name: Build and Push Docker Image |
| if: github.ref == 'refs/heads/main' |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
| build-args: | |
| USE_ROCM=1 |
| |
| |
| - name: Build and Push Docker Image (Tagged) |
| if: startsWith(github.ref, 'refs/tags/') |
| uses: docker/build-push-action@v4 |
| with: |
| context: . |
| file: Dockerfile |
| push: true |
| tags: ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} |
| labels: version=${{ github.run_id }} |
| platforms: linux/amd64,linux/arm64 |
| build-args: | |
| USE_ROCM=1 |
| |