Skip to content

Cache Docker

Cache Docker #288

Workflow file for this run

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, plucky]
dart_version: [v6.15]
platforms: ["linux/amd64,linux/arm64,linux/ppc64le,linux/s390x"]
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
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
manylinux:
name: manylinux
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]
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 }}