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 .