Cache Docker #278
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Cache Docker | |
| on: | |
| push: | |
| branches: ["**"] | |
| paths: | |
| - ".github/workflows/cache_docker.yml" | |
| - "docker/dev/**" | |
| pull_request: | |
| branches: ["**"] | |
| paths: | |
| - ".github/workflows/cache_docker.yml" | |
| - "docker/dev/**" | |
| release: | |
| types: [published] | |
| schedule: | |
| # Run at 02:00 UTC every Friday | |
| # https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events | |
| - cron: "0 2 * * FRI" | |
| workflow_dispatch: | |
| env: | |
| DOCKER_REPO: jslee02/dart-dev # https://hub.docker.com/repository/docker/jslee02/dart-dev | |
| jobs: | |
| ubuntu: | |
| name: ubuntu | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| distro: [jammy, noble, oracular] | |
| dart_version: [v6.15] | |
| platforms: ["linux/amd64,linux/arm64,linux/ppc64le,linux/s390x"] | |
| build_min: [OFF] | |
| env: | |
| UBUNTU_VERSION: ${{ matrix.distro }} | |
| DART_VERSION: ${{ matrix.dart_version }} | |
| steps: | |
| # https://github.com/marketplace/actions/docker-setup-qemu | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| # https://github.com/marketplace/actions/docker-setup-buildx | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # https://github.com/marketplace/actions/docker-login | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # https://github.com/marketplace/actions/build-and-push-docker-images | |
| - name: Build and push (min) | |
| id: docker_build_min | |
| uses: docker/build-push-action@v6 | |
| if: ${{ matrix.build_min == 'ON' }} | |
| with: | |
| file: ./docker/dev/${{ env.DART_VERSION }}/Dockerfile.ubuntu.${{ env.UBUNTU_VERSION }}-min | |
| platforms: ${{ matrix.platforms }} | |
| push: true | |
| tags: ${{ env.DOCKER_REPO }}:ubuntu-${{ env.UBUNTU_VERSION }}-min-${{ env.DART_VERSION }} | |
| - name: Build and push | |
| id: docker_build | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: ./docker/dev/${{ env.DART_VERSION }}/Dockerfile.ubuntu.${{ env.UBUNTU_VERSION }} | |
| platforms: ${{ matrix.platforms }} | |
| push: true | |
| tags: ${{ env.DOCKER_REPO }}:ubuntu-${{ env.UBUNTU_VERSION }}-${{ env.DART_VERSION }} | |
| - name: Image digest | |
| run: echo ${{ steps.docker_build.outputs.digest }} | |
| # Manylinux min | |
| manylinux_min: | |
| name: manylinux (min) | |
| runs-on: ubuntu-latest | |
| continue-on-error: ${{ matrix.experimental }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| dockerfile: [Dockerfile.manylinux_2_28_x86_64] | |
| base_image: [quay.io/pypa/manylinux_2_28_x86_64] | |
| image: [manylinux_2_28_x86_64] | |
| platforms: ["linux/amd64"] | |
| dart_version: [v6.15] | |
| experimental: [false] | |
| include: | |
| - dockerfile: Dockerfile.manylinux_2_28_aarch64-min | |
| base_image: quay.io/pypa/manylinux_2_28_aarch64 | |
| image: manylinux_2_28_aarch64-min | |
| platforms: "linux/arm64" | |
| dart_version: v6.15 | |
| experimental: false | |
| - dockerfile: Dockerfile.manylinux_2_28_ppc64le-min | |
| base_image: quay.io/pypa/manylinux_2_28_ppc64le | |
| image: manylinux_2_28_ppc64le-min | |
| platforms: "linux/ppc64le" | |
| dart_version: v6.15 | |
| experimental: false | |
| - dockerfile: Dockerfile.manylinux_2_28_s390x-min | |
| base_image: quay.io/pypa/manylinux_2_28_s390x | |
| image: manylinux_2_28_s390x-min | |
| platforms: "linux/s390x" | |
| dart_version: v6.15 | |
| experimental: false | |
| steps: | |
| # https://github.com/marketplace/actions/docker-setup-qemu | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| # https://github.com/marketplace/actions/docker-setup-buildx | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # https://github.com/marketplace/actions/docker-login | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # https://github.com/marketplace/actions/build-and-push-docker-images | |
| - name: Build and push | |
| id: docker_build | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: ./docker/dev/${{ matrix.dart_version }}/${{ matrix.dockerfile }} | |
| platforms: ${{ matrix.platforms }} | |
| build-args: BASE_IMAGE=${{ matrix.base_image }} | |
| push: true | |
| tags: ${{ env.DOCKER_REPO }}:${{ matrix.image }}-${{ matrix.dart_version }} | |
| - name: Image digest | |
| run: echo ${{ steps.docker_build.outputs.digest }} | |
| # Manylinux | |
| manylinux: | |
| name: manylinux | |
| needs: [manylinux_min] | |
| runs-on: ubuntu-latest | |
| continue-on-error: ${{ matrix.experimental }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| dockerfile: [Dockerfile.manylinux_2_28_aarch64] | |
| base_image: ["jslee02/dart-dev:manylinux_2_28_aarch64-min-v6.15"] | |
| image: [manylinux_2_28_aarch64] | |
| platforms: ["linux/arm64"] | |
| dart_version: [v6.15] | |
| experimental: [false] | |
| include: | |
| - dockerfile: Dockerfile.manylinux_2_28_ppc64le | |
| base_image: jslee02/dart-dev:manylinux_2_28_ppc64le-min-v6.15 | |
| image: manylinux_2_28_ppc64le | |
| platforms: "linux/ppc64le" | |
| dart_version: v6.15 | |
| experimental: false | |
| - dockerfile: Dockerfile.manylinux_2_28_s390x | |
| base_image: jslee02/dart-dev:manylinux_2_28_s390x-min-v6.15 | |
| image: manylinux_2_28_s390x | |
| platforms: "linux/s390x" | |
| dart_version: v6.15 | |
| experimental: false | |
| steps: | |
| # https://github.com/marketplace/actions/docker-setup-qemu | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| # https://github.com/marketplace/actions/docker-setup-buildx | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # https://github.com/marketplace/actions/docker-login | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # https://github.com/marketplace/actions/build-and-push-docker-images | |
| - name: Build and push | |
| id: docker_build | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: ./docker/dev/${{ matrix.dart_version }}/${{ matrix.dockerfile }} | |
| platforms: ${{ matrix.platforms }} | |
| build-args: BASE_IMAGE=${{ matrix.base_image }} | |
| push: true | |
| tags: ${{ env.DOCKER_REPO }}:${{ matrix.image }}-${{ matrix.dart_version }} | |
| - name: Image digest | |
| run: echo ${{ steps.docker_build.outputs.digest }} | |
| # Tracy Profiler | |
| tracy: | |
| name: tracy profiler | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| dart_version: [v6.15] | |
| build_min: [ON] | |
| env: | |
| OS_VERSION: tracy | |
| DART_VERSION: ${{ matrix.dart_version }} | |
| steps: | |
| # https://github.com/marketplace/actions/docker-setup-qemu | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| # https://github.com/marketplace/actions/docker-setup-buildx | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # https://github.com/marketplace/actions/docker-login | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # https://github.com/marketplace/actions/build-and-push-docker-images | |
| - name: Build and push | |
| id: docker_build | |
| uses: docker/build-push-action@v6 | |
| with: | |
| file: ./docker/dev/${{ env.DART_VERSION }}/Dockerfile.${{ env.OS_VERSION }} | |
| push: true | |
| tags: ${{ env.DOCKER_REPO }}:${{ env.OS_VERSION }}-${{ env.DART_VERSION }} | |
| - name: Image digest | |
| run: echo ${{ steps.docker_build.outputs.digest }} |