mirror of
				https://github.com/docker/setup-buildx-action.git
				synced 2025-11-04 14:44:20 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			432 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			432 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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@v3
 | 
						|
      -
 | 
						|
        name: Set up Docker Buildx
 | 
						|
        uses: ./
 | 
						|
        with:
 | 
						|
          version: ${{ matrix.buildx-version }}
 | 
						|
 | 
						|
  multi:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      -
 | 
						|
        name: Checkout
 | 
						|
        uses: actions/checkout@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        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@v3
 | 
						|
      -
 | 
						|
        name: Set up QEMU
 | 
						|
        uses: docker/setup-qemu-action@v1
 | 
						|
        with:
 | 
						|
          platforms: ${{ matrix.qemu-platforms }}
 | 
						|
      -
 | 
						|
        name: Set up Docker Buildx
 | 
						|
        uses: ./
 | 
						|
        with:
 | 
						|
          version: ${{ matrix.buildx-version }}
 | 
						|
 | 
						|
  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@v3
 | 
						|
      -
 | 
						|
        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:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        buildx-version:
 | 
						|
          - latest
 | 
						|
          - ""
 | 
						|
    steps:
 | 
						|
      -
 | 
						|
        name: Checkout
 | 
						|
        uses: actions/checkout@v3
 | 
						|
      -
 | 
						|
        name: Uninstall docker cli
 | 
						|
        run: |
 | 
						|
          sudo apt-get purge -y moby-cli moby-buildx
 | 
						|
      -
 | 
						|
        name: Set up Docker Buildx
 | 
						|
        uses: ./
 | 
						|
        with:
 | 
						|
          version: ${{ matrix.buildx-version }}
 | 
						|
      -
 | 
						|
        name: Check available in path
 | 
						|
        if: matrix.standalone
 | 
						|
        run: |
 | 
						|
          buildx version
 | 
						|
 | 
						|
  standalone-install-error:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      -
 | 
						|
        name: Checkout
 | 
						|
        uses: actions/checkout@v3
 | 
						|
      -
 | 
						|
        name: Uninstall docker cli
 | 
						|
        run: |
 | 
						|
          sudo apt-get purge -y moby-cli moby-buildx
 | 
						|
      -
 | 
						|
        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
 | 
						|
 | 
						|
  standalone-kubernetes:
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    steps:
 | 
						|
      -
 | 
						|
        name: Checkout
 | 
						|
        uses: actions/checkout@v3
 | 
						|
      -
 | 
						|
        name: Uninstall moby
 | 
						|
        run: |
 | 
						|
          sudo apt-get purge -y moby-engine moby-cli moby-buildx
 | 
						|
      -
 | 
						|
        name: Setup k8s cluster
 | 
						|
        run: |
 | 
						|
          set -x
 | 
						|
          sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
 | 
						|
          echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
 | 
						|
          sudo apt-get update
 | 
						|
          sudo apt-get install -y kubelet kubeadm kubectl
 | 
						|
          sudo swapoff -a
 | 
						|
          sudo kubeadm init --cri-socket /run/containerd/containerd.sock
 | 
						|
          mkdir -p $HOME/.kube/
 | 
						|
          sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 | 
						|
          sudo chown $USER $HOME/.kube/config
 | 
						|
          kubectl taint nodes --all node-role.kubernetes.io/master-
 | 
						|
          kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
 | 
						|
          kubectl wait --for=condition=ready --timeout=30s node --all
 | 
						|
          kubectl get nodes -o wide
 | 
						|
      -
 | 
						|
        name: Create Dockerfile
 | 
						|
        run: |
 | 
						|
          cat > ./Dockerfile <<EOL
 | 
						|
          FROM alpine
 | 
						|
          RUN echo hello
 | 
						|
          EOL
 | 
						|
      -
 | 
						|
        name: Set up Docker Buildx
 | 
						|
        uses: ./
 | 
						|
        with:
 | 
						|
          driver: kubernetes
 | 
						|
      -
 | 
						|
        name: Build
 | 
						|
        run: |
 | 
						|
          buildx build .
 |