name: ci on: schedule: - cron: '0 10 * * *' # everyday at 10am push: branches: - 'master' - 'releases/v*' tags: - 'v*' pull_request: branches: - 'master' - 'releases/v*' jobs: main: runs-on: ubuntu-latest strategy: fail-fast: false matrix: buildx-version: - latest - v0.4.1 - "" steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx id: buildx uses: ./ with: version: ${{ matrix.buildx-version }} - name: Inspect builder run: | echo "Name: ${{ steps.buildx.outputs.name }}" echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" echo "Status: ${{ steps.buildx.outputs.status }}" echo "Flags: ${{ steps.buildx.outputs.flags }}" echo "Platforms: ${{ steps.buildx.outputs.platforms }}" - name: Dump context uses: crazy-max/ghaction-dump-context@v1 multi: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx 1 id: buildx1 uses: ./ - name: Inspect builder 1 run: | echo "Name: ${{ steps.buildx1.outputs.name }}" echo "Endpoint: ${{ steps.buildx1.outputs.endpoint }}" echo "Status: ${{ steps.buildx1.outputs.status }}" echo "Flags: ${{ steps.buildx1.outputs.flags }}" echo "Platforms: ${{ steps.buildx1.outputs.platforms }}" - name: Set up Docker Buildx 2 id: buildx2 uses: ./ - name: Inspect builder 2 run: | echo "Name: ${{ steps.buildx2.outputs.name }}" echo "Endpoint: ${{ steps.buildx2.outputs.endpoint }}" echo "Status: ${{ steps.buildx2.outputs.status }}" echo "Flags: ${{ steps.buildx2.outputs.flags }}" echo "Platforms: ${{ steps.buildx2.outputs.platforms }}" error: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Stop docker run: | sudo systemctl stop docker - name: Set up Docker Buildx id: buildx continue-on-error: true uses: ./ - name: Check run: | echo "${{ toJson(steps.buildx) }}" if [ "${{ steps.buildx.outcome }}" != "failure" ] || [ "${{ steps.buildx.conclusion }}" != "success" ]; then echo "::error::Should have failed" exit 1 fi - name: Dump context if: always() uses: crazy-max/ghaction-dump-context@v1 debug: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Create Dockerfile run: | cat > ./Dockerfile <<EOL FROM alpine RUN uname -a EOL - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: ./ with: buildkitd-flags: --debug - name: Build uses: docker/build-push-action@v2 with: context: . platforms: linux/amd64,linux/arm64,linux/ppc64le install: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: ./ with: install: true - name: Check cmd run: | docker build --help use: runs-on: ubuntu-latest strategy: fail-fast: false matrix: use: - true - false steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: ./ with: use: ${{ matrix.use }} - name: List builder instances run: docker buildx ls driver: runs-on: ubuntu-latest strategy: fail-fast: false matrix: driver-opts: - image=moby/buildkit:latest - | image=moby/buildkit:master network=host steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: ./ with: driver: docker-container driver-opts: ${{ matrix.driver-opts }} docker-driver: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: ./ id: builder with: driver: docker - name: Verify run: | [[ "${{ steps.builder.outputs.name }}" = "default" ]] docker buildx inspect docker buildx inspect | grep Driver | grep docker docker buildx inspect | grep Status | grep running endpoint: runs-on: ubuntu-latest services: dind: image: docker:dind options: >- --privileged --health-cmd "docker info" --health-interval 10s --health-timeout 5s --health-retries 5 env: DOCKER_TLS_CERTDIR: "" ports: - 2375:2375 steps: - name: Checkout uses: actions/checkout@v2 - name: Create context run: | docker context create mycontext --docker host=tcp://127.0.0.1:2375 - name: Check context run: | docker --context mycontext info - name: Set up Docker Buildx uses: ./ with: endpoint: mycontext env: DOCKER_CONTEXT: mycontext config: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Create buildkitd conf run: | cat > /tmp/buildkitd.toml <<EOL debug = true [registry."docker.io"] mirrors = ["mirror.gcr.io"] EOL - name: Create Dockerfile run: | cat > ./Dockerfile <<EOL FROM alpine EOL - name: Set up Docker Buildx uses: ./ with: buildkitd-flags: --debug config: /tmp/buildkitd.toml - name: Build uses: docker/build-push-action@v2 with: context: . config-inline: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Create Dockerfile run: | cat > ./Dockerfile <<EOL FROM alpine EOL - name: Set up Docker Buildx uses: ./ with: buildkitd-flags: --debug config-inline: | debug = true [registry."docker.io"] mirrors = ["mirror.gcr.io"] - name: Build uses: docker/build-push-action@v2 with: context: . with-qemu: runs-on: ubuntu-latest strategy: fail-fast: false matrix: buildx-version: - latest - v0.4.1 - "" qemu-platforms: - all - arm64,riscv64,arm steps: - name: Checkout uses: actions/checkout@v2 - name: Set up QEMU uses: docker/setup-qemu-action@v1 with: platforms: ${{ matrix.qemu-platforms }} - name: Set up Docker Buildx id: buildx uses: ./ with: version: ${{ matrix.buildx-version }} - name: Inspect builder run: | echo "Name: ${{ steps.buildx.outputs.name }}" echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" echo "Status: ${{ steps.buildx.outputs.status }}" echo "Flags: ${{ steps.buildx.outputs.flags }}" echo "Platforms: ${{ steps.buildx.outputs.platforms }}" build-ref: runs-on: ubuntu-latest strategy: fail-fast: false matrix: ref: - master - refs/tags/v0.5.1 - refs/pull/731/head - cb185f095fd3d9444e0aa605d3789e9e05f2a1e7 steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Docker Buildx uses: ./ with: version: https://github.com/docker/buildx.git#${{ matrix.ref }} - name: Check version run: | docker buildx version - name: Create Dockerfile run: | cat > ./Dockerfile <<EOL FROM alpine EOL - name: Build uses: docker/build-push-action@master with: context: .