mirror of
				https://github.moeyy.xyz/https://github.com/docker/setup-buildx-action
				synced 2025-10-30 02:38:52 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			566 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			566 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: ci
 | |
| 
 | |
| concurrency:
 | |
|   group: ${{ github.workflow }}-${{ github.ref }}
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| on:
 | |
|   schedule:
 | |
|     - cron: '0 10 * * *'
 | |
|   push:
 | |
|     branches:
 | |
|       - 'master'
 | |
|       - 'releases/v*'
 | |
|     tags:
 | |
|       - 'v*'
 | |
|   pull_request:
 | |
| 
 | |
| jobs:
 | |
|   main:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         buildx-version:
 | |
|           - ""
 | |
|           - "latest"
 | |
|           - "v0.4.1"
 | |
|           - "lab:latest"
 | |
|           - "lab:v0.11.2-desktop.2"
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|       -
 | |
|         name: Nodes output
 | |
|         run: |
 | |
|           cat << EOF
 | |
|           ${{ steps.buildx.outputs.nodes }}
 | |
|           EOF
 | |
| 
 | |
|   multi:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Set up Docker Buildx 1
 | |
|         uses: ./
 | |
|       -
 | |
|         name: Set up Docker Buildx 2
 | |
|         uses: ./
 | |
| 
 | |
|   error:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Stop docker
 | |
|         run: |
 | |
|           sudo systemctl stop docker docker.socket
 | |
|       -
 | |
|         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@v2
 | |
| 
 | |
|   debug:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Create Dockerfile
 | |
|         run: |
 | |
|           cat > ./Dockerfile <<EOL
 | |
|           FROM alpine
 | |
|           RUN uname -a
 | |
|           EOL
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v2
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           buildkitd-flags: --debug
 | |
|       -
 | |
|         name: Build
 | |
|         uses: docker/build-push-action@v4
 | |
|         with:
 | |
|           context: .
 | |
|           platforms: linux/amd64,linux/arm64,linux/ppc64le
 | |
| 
 | |
|   install:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         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@v4
 | |
|       -
 | |
|         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@v4
 | |
|       -
 | |
|         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@v4
 | |
|       -
 | |
|         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@v4
 | |
|       -
 | |
|         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@v4
 | |
|       -
 | |
|         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@v4
 | |
|         with:
 | |
|           context: .
 | |
| 
 | |
|   config-inline:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         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@v4
 | |
|         with:
 | |
|           context: .
 | |
| 
 | |
|   with-qemu:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         buildx-version:
 | |
|           - v0.9.1
 | |
|           - ""
 | |
|         qemu-platforms:
 | |
|           - all
 | |
|           - arm64,riscv64,arm
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v2
 | |
|         with:
 | |
|           platforms: ${{ matrix.qemu-platforms }}
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|       -
 | |
|         name: List builder platforms
 | |
|         run: echo ${{ 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@v4
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           version: https://github.com/docker/buildx.git#${{ matrix.ref }}
 | |
|       -
 | |
|         name: Create Dockerfile
 | |
|         run: |
 | |
|           cat > ./Dockerfile <<EOL
 | |
|           FROM alpine
 | |
|           EOL
 | |
|       -
 | |
|         name: Build
 | |
|         uses: docker/build-push-action@master
 | |
|         with:
 | |
|           context: .
 | |
| 
 | |
|   standalone-cmd:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Uninstall docker cli
 | |
|         run: |
 | |
|           if dpkg -s "docker-ce" >/dev/null 2>&1; then
 | |
|             sudo dpkg -r --force-depends docker-ce-cli docker-buildx-plugin
 | |
|           else
 | |
|             sudo apt-get purge -y moby-cli moby-buildx
 | |
|           fi
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|       -
 | |
|         name: Create Dockerfile
 | |
|         run: |
 | |
|           cat > ./Dockerfile <<EOL
 | |
|           FROM alpine
 | |
|           EOL
 | |
|       -
 | |
|         name: Build
 | |
|         run: |
 | |
|           buildx build .
 | |
| 
 | |
|   standalone-action:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Uninstall docker cli
 | |
|         run: |
 | |
|           if dpkg -s "docker-ce" >/dev/null 2>&1; then
 | |
|             sudo dpkg -r --force-depends docker-ce-cli docker-buildx-plugin
 | |
|           else
 | |
|             sudo apt-get purge -y moby-cli moby-buildx
 | |
|           fi
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|       -
 | |
|         name: Create Dockerfile
 | |
|         run: |
 | |
|           cat > ./Dockerfile <<EOL
 | |
|           FROM alpine
 | |
|           EOL
 | |
|       -
 | |
|         name: Build
 | |
|         uses: docker/build-push-action@master
 | |
|         with:
 | |
|           context: .
 | |
| 
 | |
|   standalone-install-error:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Uninstall docker cli
 | |
|         run: |
 | |
|           if dpkg -s "docker-ce" >/dev/null 2>&1; then
 | |
|             sudo dpkg -r --force-depends docker-ce-cli docker-buildx-plugin
 | |
|           else
 | |
|             sudo apt-get purge -y moby-cli moby-buildx
 | |
|           fi
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         continue-on-error: true
 | |
|         uses: ./
 | |
|         with:
 | |
|           install: true
 | |
|       -
 | |
|         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
 | |
| 
 | |
|   append:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Create dummy contexts
 | |
|         run: |
 | |
|           docker context create ctxbuilder2
 | |
|           docker context create ctxbuilder3
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           append: |
 | |
|             - name: builder2
 | |
|               endpoint: ctxbuilder2
 | |
|               platforms: linux/amd64
 | |
|               driver-opts:
 | |
|                 - image=moby/buildkit:master
 | |
|                 - network=host
 | |
|             - endpoint: ctxbuilder3
 | |
|               platforms: linux/arm64
 | |
|       -
 | |
|         name: List builder platforms
 | |
|         run: echo ${{ steps.buildx.outputs.platforms }}
 | |
| 
 | |
|   platforms:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v2
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           platforms: linux/amd64
 | |
| 
 | |
|   docker-context:
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Create Docker context
 | |
|         run: |
 | |
|           docker context create foo
 | |
|           docker context use foo
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           driver: docker
 | |
| 
 | |
|   cleanup:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         cleanup:
 | |
|           - true
 | |
|           - false
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           cleanup: ${{ matrix.cleanup }}
 | |
| 
 | |
|   k3s:
 | |
|     runs-on: ubuntu-20.04
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         version:
 | |
|           - v0.11.0
 | |
|           - v0.10.5
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v4
 | |
|       -
 | |
|         name: Install k3s
 | |
|         uses: crazy-max/.github/.github/actions/install-k3s@605d30d5ae97f6680578ace4b56645af79343e60
 | |
|         with:
 | |
|           version: "v1.21.2-k3s1"
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: ./
 | |
|         with:
 | |
|           version: ${{ matrix.version }}
 | |
|           driver: kubernetes
 | |
|           platforms: linux/amd64
 | |
|           driver-opts: |
 | |
|             image=moby/buildkit:buildx-stable-1
 | |
|             qemu.install=true
 | |
|           append: |
 | |
|             - platforms: linux/arm64
 | |
|               driver-opts:
 | |
|                 - image=moby/buildkit:buildx-stable-1
 | |
|                 - qemu.install=true
 | |
|             - platforms: linux/s390x
 | |
|               driver-opts:
 | |
|                 - image=moby/buildkit:buildx-stable-1
 | |
|                 - qemu.install=true
 | |
|       -
 | |
|         name: Create Dockerfile
 | |
|         run: |
 | |
|           cat > ./Dockerfile <<EOL
 | |
|           FROM alpine
 | |
|           RUN uname -a
 | |
|           EOL
 | |
|       -
 | |
|         name: Build
 | |
|         uses: docker/build-push-action@master
 | |
|         with:
 | |
|           context: .
 | 
