mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	Bake workflow
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		| @@ -1,3 +1,3 @@ | ||||
| bin/ | ||||
| cross-out/ | ||||
| release-out/ | ||||
| release-out/ | ||||
|   | ||||
							
								
								
									
										144
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										144
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -16,61 +16,15 @@ on: | ||||
| env: | ||||
|   REPO_SLUG: "docker/buildx-bin" | ||||
|   REPO_SLUG_ORIGIN: "moby/buildkit:master" | ||||
|   CACHEKEY_BINARIES: "binaries" | ||||
|   PLATFORMS: "linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le,linux/riscv64" | ||||
|   RELEASE_OUT: "./release-out" | ||||
|  | ||||
| jobs: | ||||
|   base: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Cache ${{ env.CACHEKEY_BINARIES }} | ||||
|         uses: actions/cache@v2 | ||||
|         with: | ||||
|           path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} | ||||
|       - | ||||
|         name: Build ${{ env.CACHEKEY_BINARIES }} | ||||
|         run: | | ||||
|           ./hack/build_ci_first_pass binaries | ||||
|         env: | ||||
|           CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           CACHEDIR_TO: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }}-new | ||||
|       - | ||||
|         # FIXME: Temp fix for https://github.com/moby/buildkit/issues/1850 | ||||
|         name: Move cache | ||||
|         run: | | ||||
|           rm -rf /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           mv /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }}-new /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|  | ||||
|   test: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [base] | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Cache ${{ env.CACHEKEY_BINARIES }} | ||||
|         uses: actions/cache@v2 | ||||
|         with: | ||||
|           path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -83,91 +37,15 @@ jobs: | ||||
|         name: Test | ||||
|         run: | | ||||
|           make test | ||||
|         env: | ||||
|           TEST_COVERAGE: 1 | ||||
|           TESTFLAGS: -v --parallel=6 --timeout=20m | ||||
|           CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|       - | ||||
|         name: Send to Codecov | ||||
|         uses: codecov/codecov-action@v2 | ||||
|         with: | ||||
|           file: ./coverage/coverage.txt | ||||
|  | ||||
|   cross: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [base] | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Cache ${{ env.CACHEKEY_BINARIES }} | ||||
|         uses: actions/cache@v2 | ||||
|         with: | ||||
|           path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} | ||||
|       - | ||||
|         name: Cross | ||||
|         name: Build binaries | ||||
|         run: | | ||||
|           make cross | ||||
|         env: | ||||
|           TARGETPLATFORM: ${{ env.PLATFORMS }},darwin/amd64,darwin/arm64,windows/amd64,windows/arm64 | ||||
|           CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|  | ||||
|   binaries: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [test, cross] | ||||
|     env: | ||||
|       RELEASE_OUT: ./release-out | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Prepare | ||||
|         id: prep | ||||
|         run: | | ||||
|           TAG=pr | ||||
|           if [[ $GITHUB_REF == refs/tags/v* ]]; then | ||||
|             TAG=${GITHUB_REF#refs/tags/} | ||||
|           elif [[ $GITHUB_REF == refs/heads/* ]]; then | ||||
|             TAG=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g') | ||||
|           fi | ||||
|           echo ::set-output name=tag::${TAG} | ||||
|       - | ||||
|         name: Cache ${{ env.CACHEKEY_BINARIES }} | ||||
|         uses: actions/cache@v2 | ||||
|         with: | ||||
|           path: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           key: ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}-${{ github.sha }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-buildx-${{ env.CACHEKEY_BINARIES }}- | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} | ||||
|       - | ||||
|         name: Build ${{ steps.prep.outputs.tag }} | ||||
|         run: | | ||||
|           ./hack/release ${{ env.RELEASE_OUT }} | ||||
|         env: | ||||
|           PLATFORMS: ${{ env.PLATFORMS }},darwin/amd64,darwin/arm64,windows/amd64,windows/arm64 | ||||
|           CHECKSUMS: 1 | ||||
|           CACHEDIR_FROM: /tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           make release | ||||
|       - | ||||
|         name: Upload artifacts | ||||
|         uses: actions/upload-artifact@v2 | ||||
| @@ -186,6 +64,7 @@ jobs: | ||||
|             type=ref,event=branch | ||||
|             type=ref,event=pr | ||||
|             type=semver,pattern={{version}} | ||||
|           bake-target: meta-helper | ||||
|       - | ||||
|         name: Login to DockerHub | ||||
|         if: github.event_name != 'pull_request' | ||||
| @@ -195,15 +74,13 @@ jobs: | ||||
|           password: ${{ secrets.DOCKERHUB_TOKEN }} | ||||
|       - | ||||
|         name: Build and push image | ||||
|         uses: docker/build-push-action@v2 | ||||
|         uses: docker/bake-action@v1 | ||||
|         with: | ||||
|           context: . | ||||
|           target: binaries | ||||
|           files: | | ||||
|             ./docker-bake.hcl | ||||
|             ${{ steps.meta.outputs.bake-file }} | ||||
|           targets: image-cross | ||||
|           push: ${{ github.event_name != 'pull_request' }} | ||||
|           cache-from: type=local,src=/tmp/.buildx-cache/${{ env.CACHEKEY_BINARIES }} | ||||
|           platforms: ${{ env.PLATFORMS }},darwin/amd64,darwin/arm64,windows/amd64,windows/arm64 | ||||
|           tags: ${{ steps.meta.outputs.tags }} | ||||
|           labels: ${{ steps.meta.outputs.labels }} | ||||
|       - | ||||
|         name: GitHub Release | ||||
|         if: startsWith(github.ref, 'refs/tags/v') | ||||
| @@ -213,4 +90,3 @@ jobs: | ||||
|         with: | ||||
|           draft: true | ||||
|           files: ${{ env.RELEASE_OUT }}/* | ||||
|           name: ${{ steps.prep.outputs.tag }} | ||||
|   | ||||
							
								
								
									
										8
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
								
							| @@ -13,9 +13,6 @@ on: | ||||
|       - 'master' | ||||
|       - 'v[0-9]*' | ||||
|  | ||||
| env: | ||||
|   REPO_SLUG_ORIGIN: "moby/buildkit:master" | ||||
|  | ||||
| jobs: | ||||
|   validate: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -30,11 +27,6 @@ jobs: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           driver-opts: image=${{ env.REPO_SLUG_ORIGIN }} | ||||
|       - | ||||
|         name: Run | ||||
|         run: | | ||||
|   | ||||
							
								
								
									
										9
									
								
								.mailmap
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								.mailmap
									
									
									
									
									
								
							| @@ -1,6 +1,13 @@ | ||||
| # This file lists all individuals having contributed content to the repository. | ||||
| # For how it is generated, see `hack/generate-authors`. | ||||
| # For how it is generated, see hack/dockerfiles/authors.Dockerfile. | ||||
|  | ||||
| CrazyMax <github@crazymax.dev> | ||||
| CrazyMax <github@crazymax.dev> <1951866+crazy-max@users.noreply.github.com> | ||||
| CrazyMax <github@crazymax.dev> <crazy-max@users.noreply.github.com> | ||||
| Sebastiaan van Stijn <github@gone.nl> | ||||
| Sebastiaan van Stijn <github@gone.nl> <thaJeztah@users.noreply.github.com> | ||||
| Tibor Vass <tibor@docker.com> | ||||
| Tibor Vass <tibor@docker.com> <tiborvass@users.noreply.github.com> | ||||
| Tõnis Tiigi <tonistiigi@gmail.com> | ||||
| Ulysses Souza <ulyssessouza@gmail.com> | ||||
| Wang Jinglei <morlay.null@gmail.com> | ||||
|   | ||||
							
								
								
									
										40
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -1,7 +1,45 @@ | ||||
| # This file lists all individuals having contributed content to the repository. | ||||
| # For how it is generated, see `scripts/generate-authors.sh`. | ||||
| # For how it is generated, see hack/dockerfiles/authors.Dockerfile. | ||||
|  | ||||
| Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp> | ||||
| Alex Couture-Beil <alex@earthly.dev> | ||||
| Andrew Haines <andrew.haines@zencargo.com> | ||||
| Andy MacKinlay <admackin@users.noreply.github.com> | ||||
| Anthony Poschen <zanven42@gmail.com> | ||||
| Artur Klauser <Artur.Klauser@computer.org> | ||||
| Batuhan Apaydın <developerguy2@gmail.com> | ||||
| Bin Du <bindu@microsoft.com> | ||||
| Brandon Philips <brandon@ifup.org> | ||||
| Brian Goff <cpuguy83@gmail.com> | ||||
| CrazyMax <github@crazymax.dev> | ||||
| dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | ||||
| Devin Bayer <dev@doubly.so> | ||||
| Djordje Lukic <djordje.lukic@docker.com> | ||||
| Dmytro Makovey <dmytro.makovey@docker.com> | ||||
| Donghui Wang <977675308@qq.com> | ||||
| faust <faustin@fala.red> | ||||
| Felipe Santos <felipecassiors@gmail.com> | ||||
| Fernando Miguel <github@FernandoMiguel.net> | ||||
| gfrancesco <gfrancesco@users.noreply.github.com> | ||||
| gracenoah <gracenoahgh@gmail.com> | ||||
| Hollow Man <hollowman@hollowman.ml> | ||||
| Ilya Dmitrichenko <errordeveloper@gmail.com> | ||||
| Jack Laxson <jackjrabbit@gmail.com> | ||||
| Jean-Yves Gastaud <jygastaud@gmail.com> | ||||
| khs1994 <khs1994@khs1994.com> | ||||
| Kotaro Adachi <k33asby@gmail.com> | ||||
| l00397676 <lujingxiao@huawei.com> | ||||
| Michal Augustyn <michal.augustyn@mail.com> | ||||
| Patrick Van Stee <patrick@vanstee.me> | ||||
| Saul Shanabrook <s.shanabrook@gmail.com> | ||||
| Sebastiaan van Stijn <github@gone.nl> | ||||
| SHIMA Tatsuya <ts1s1andn@gmail.com> | ||||
| Silvin Lubecki <silvin.lubecki@docker.com> | ||||
| Solomon Hykes <sh.github.6811@hykes.org> | ||||
| Sune Keller <absukl@almbrand.dk> | ||||
| Tibor Vass <tibor@docker.com> | ||||
| Tõnis Tiigi <tonistiigi@gmail.com> | ||||
| Ulysses Souza <ulyssessouza@gmail.com> | ||||
| Wang Jinglei <morlay.null@gmail.com> | ||||
| Xiang Dai <764524258@qq.com> | ||||
| zelahi <elahi.zuhayr@gmail.com> | ||||
|   | ||||
							
								
								
									
										40
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -1,8 +1,7 @@ | ||||
| # syntax=docker/dockerfile:1.3 | ||||
|  | ||||
| ARG GO_VERSION=1.17.0 | ||||
| ARG DOCKERD_VERSION=19.03 | ||||
| ARG CLI_VERSION=19.03 | ||||
| ARG DOCKERD_VERSION=20.10.8 | ||||
|  | ||||
| FROM docker:$DOCKERD_VERSION AS dockerd-release | ||||
|  | ||||
| @@ -26,24 +25,22 @@ RUN --mount=target=. \ | ||||
| FROM gobase AS buildx-build | ||||
| ENV CGO_ENABLED=0 | ||||
| ARG TARGETPLATFORM | ||||
| RUN --mount=target=. --mount=target=/root/.cache,type=cache \ | ||||
|   --mount=target=/go/pkg/mod,type=cache \ | ||||
|   --mount=source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildx-version \ | ||||
| RUN --mount=type=bind,target=. \ | ||||
|   --mount=type=cache,target=/root/.cache \ | ||||
|   --mount=type=cache,target=/go/pkg/mod \ | ||||
|   --mount=type=bind,source=/tmp/.ldflags,target=/tmp/.ldflags,from=buildx-version \ | ||||
|   set -x; xx-go build -ldflags "$(cat /tmp/.ldflags)" -o /usr/bin/buildx ./cmd/buildx && \ | ||||
|   xx-verify --static /usr/bin/buildx | ||||
|  | ||||
| FROM buildx-build AS integration-tests | ||||
| COPY . . | ||||
| FROM buildx-build AS test | ||||
| RUN --mount=type=bind,target=. \ | ||||
|   --mount=type=cache,target=/root/.cache \ | ||||
|   --mount=type=cache,target=/go/pkg/mod \ | ||||
|   go test -v -coverprofile=/tmp/coverage.txt -covermode=atomic ./... && \ | ||||
|   go tool cover -func=/tmp/coverage.txt | ||||
|  | ||||
| # FROM golang:1.12-alpine AS docker-cli-build | ||||
| # RUN apk add -U git bash coreutils gcc musl-dev | ||||
| # ENV CGO_ENABLED=0 | ||||
| # ARG REPO=github.com/tiborvass/cli | ||||
| # ARG BRANCH=cli-plugin-aliases | ||||
| # ARG CLI_VERSION | ||||
| # WORKDIR /go/src/github.com/docker/cli | ||||
| # RUN git clone git://$REPO . && git checkout $BRANCH | ||||
| # RUN ./scripts/build/binary | ||||
| FROM scratch AS test-coverage | ||||
| COPY --from=test /tmp/coverage.txt /coverage.txt | ||||
|  | ||||
| FROM scratch AS binaries-unix | ||||
| COPY --from=buildx-build /usr/bin/buildx / | ||||
| @@ -56,28 +53,29 @@ COPY --from=buildx-build /usr/bin/buildx /buildx.exe | ||||
|  | ||||
| FROM binaries-$TARGETOS AS binaries | ||||
|  | ||||
| # Release | ||||
| FROM --platform=$BUILDPLATFORM alpine AS releaser | ||||
| WORKDIR /work | ||||
| ARG TARGETPLATFORM | ||||
| RUN --mount=from=binaries \ | ||||
|   --mount=source=/tmp/.version,target=/tmp/.version,from=buildx-version \ | ||||
|   --mount=type=bind,source=/tmp/.version,target=/tmp/.version,from=buildx-version \ | ||||
|   mkdir -p /out && cp buildx* "/out/buildx-$(cat /tmp/.version).$(echo $TARGETPLATFORM | sed 's/\//-/g')$(ls buildx* | sed -e 's/^buildx//')" | ||||
|  | ||||
| FROM scratch AS release | ||||
| COPY --from=releaser /out/ / | ||||
|  | ||||
| FROM alpine AS demo-env | ||||
| # Shell | ||||
| FROM docker:$DOCKERD_VERSION AS dockerd-release | ||||
| FROM alpine AS shell | ||||
| RUN apk add --no-cache iptables tmux git vim less openssh | ||||
| RUN mkdir -p /usr/local/lib/docker/cli-plugins && ln -s /usr/local/bin/buildx /usr/local/lib/docker/cli-plugins/docker-buildx | ||||
| COPY ./hack/demo-env/entrypoint.sh /usr/local/bin | ||||
| COPY ./hack/demo-env/tmux.conf /root/.tmux.conf | ||||
| COPY --from=dockerd-release /usr/local/bin /usr/local/bin | ||||
| #COPY --from=docker-cli-build /go/src/github.com/docker/cli/build/docker /usr/local/bin | ||||
|  | ||||
| WORKDIR /work | ||||
| COPY ./hack/demo-env/examples . | ||||
| COPY --from=binaries / /usr/local/bin/ | ||||
| VOLUME /var/lib/docker | ||||
| ENTRYPOINT ["entrypoint.sh"] | ||||
|  | ||||
| FROM binaries | ||||
| FROM binaries | ||||
|   | ||||
							
								
								
									
										54
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,40 +1,56 @@ | ||||
| ifneq (, $(BUILDX_BIN)) | ||||
| 	export BUILDX_CMD = $(BUILDX_BIN) | ||||
| else ifneq (, $(shell docker buildx version)) | ||||
| 	export BUILDX_CMD = docker buildx | ||||
| else ifneq (, $(shell which buildx)) | ||||
| 	export BUILDX_CMD = $(which buildx) | ||||
| else | ||||
| 	$(error "Buildx is required: https://github.com/docker/buildx#installing") | ||||
| endif | ||||
|  | ||||
| export BIN_OUT = ./bin | ||||
| export RELEASE_OUT = ./release-out | ||||
|  | ||||
| shell: | ||||
| 	./hack/shell | ||||
|  | ||||
| binaries: | ||||
| 	./hack/binaries | ||||
| 	$(BUILDX_CMD) bake binaries | ||||
|  | ||||
| binaries-cross: | ||||
| 	EXPORT_LOCAL=cross-out ./hack/cross | ||||
|  | ||||
| cross: | ||||
| 	./hack/cross | ||||
| 	$(BUILDX_CMD) bake binaries-cross | ||||
|  | ||||
| install: binaries | ||||
| 	mkdir -p ~/.docker/cli-plugins | ||||
| 	install bin/buildx ~/.docker/cli-plugins/docker-buildx | ||||
|  | ||||
| lint: | ||||
| 	./hack/lint | ||||
|  | ||||
| test: | ||||
| 	./hack/test | ||||
|  | ||||
| validate-vendor: | ||||
| 	./hack/validate-vendor | ||||
|  | ||||
| validate-docs: | ||||
| 	./hack/validate-docs | ||||
| release: | ||||
| 	./hack/release | ||||
|  | ||||
| validate-all: lint test validate-vendor validate-docs | ||||
|  | ||||
| lint: | ||||
| 	$(BUILDX_CMD) bake lint | ||||
|  | ||||
| test: | ||||
| 	$(BUILDX_CMD) bake test | ||||
|  | ||||
| validate-vendor: | ||||
| 	$(BUILDX_CMD) bake validate-vendor | ||||
|  | ||||
| validate-docs: | ||||
| 	$(BUILDX_CMD) bake validate-docs | ||||
|  | ||||
| validate-authors: | ||||
| 	$(BUILDX_CMD) bake validate-authors | ||||
|  | ||||
| vendor: | ||||
| 	./hack/update-vendor | ||||
|  | ||||
| docs: | ||||
| 	./hack/update-docs | ||||
|  | ||||
| generate-authors: | ||||
| 	./hack/generate-authors | ||||
| authors: | ||||
| 	$(BUILDX_CMD) bake update-authors | ||||
|  | ||||
| .PHONY: vendor lint shell binaries install binaries-cross validate-all generate-authors validate-docs docs | ||||
| .PHONY: shell binaries binaries-cross install release validate-all lint validate-vendor validate-docs validate-authors vendor docs authors | ||||
|   | ||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @@ -26,8 +26,6 @@ Key features: | ||||
|   - [From `Dockerfile`](#from-dockerfile) | ||||
| - [Set buildx as the default builder](#set-buildx-as-the-default-builder) | ||||
| - [Building](#building) | ||||
|   - [with Docker 18.09+](#with-docker-1809) | ||||
|   - [with buildx or Docker 19.03](#with-buildx-or-docker-1903) | ||||
| - [Getting started](#getting-started) | ||||
|   - [Building with buildx](#building-with-buildx) | ||||
|   - [Working with builder instances](#working-with-builder-instances) | ||||
| @@ -90,25 +88,25 @@ RUN docker buildx version | ||||
| # Set buildx as the default builder | ||||
|  | ||||
| Running the command [`docker buildx install`](docs/reference/buildx_install.md) | ||||
| sets up docker builder command as an alias to `docker buildx`. This results in | ||||
| the ability to have `docker build` use the current buildx builder. | ||||
| sets up docker builder command as an alias to `docker buildx build`. This | ||||
| results in the ability to have `docker build` use the current buildx builder. | ||||
|  | ||||
| To remove this alias, run [`docker buildx uninstall`](docs/reference/buildx_uninstall.md). | ||||
|  | ||||
| # Building | ||||
|  | ||||
| ## With buildx or Docker 19.03+ | ||||
|  | ||||
| ```console | ||||
| $ export DOCKER_BUILDKIT=1 | ||||
| $ docker build --platform=local -o . git://github.com/docker/buildx | ||||
| # Buildx 0.6+ | ||||
| $ docker buildx bake "git://github.com/docker/buildx" | ||||
| $ mkdir -p ~/.docker/cli-plugins | ||||
| $ mv ./bin/buildx ~/.docker/cli-plugins/docker-buildx | ||||
|  | ||||
| # Docker 19.03+ | ||||
| $ DOCKER_BUILDKIT=1 docker build --platform=local -o . "git://github.com/docker/buildx" | ||||
| $ mkdir -p ~/.docker/cli-plugins | ||||
| $ mv buildx ~/.docker/cli-plugins/docker-buildx | ||||
| ``` | ||||
|  | ||||
| ## With Docker 18.09+ | ||||
|  | ||||
| ```console | ||||
| # Local  | ||||
| $ git clone git://github.com/docker/buildx && cd buildx | ||||
| $ make install | ||||
| ``` | ||||
|   | ||||
							
								
								
									
										128
									
								
								docker-bake.hcl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								docker-bake.hcl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| variable "GO_VERSION" { | ||||
|   default = "1.17.0" | ||||
| } | ||||
| variable "BIN_OUT" { | ||||
|   default = "./bin" | ||||
| } | ||||
| variable "RELEASE_OUT" { | ||||
|   default = "./release-out" | ||||
| } | ||||
|  | ||||
| // Special target: https://github.com/docker/metadata-action#bake-definition | ||||
| target "meta-helper" { | ||||
|   tags = ["docker/buildx-bin:local"] | ||||
| } | ||||
|  | ||||
| target "_common" { | ||||
|   args = { | ||||
|     GO_VERSION = GO_VERSION | ||||
|     BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1 | ||||
|   } | ||||
| } | ||||
|  | ||||
| group "default" { | ||||
|   targets = ["binaries"] | ||||
| } | ||||
|  | ||||
| group "validate" { | ||||
|   targets = ["lint", "validate-vendor", "validate-docs"] | ||||
| } | ||||
|  | ||||
| target "lint" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/lint.Dockerfile" | ||||
|   output = ["type=cacheonly"] | ||||
| } | ||||
|  | ||||
| target "validate-vendor" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/vendor.Dockerfile" | ||||
|   target = "validate" | ||||
|   output = ["type=cacheonly"] | ||||
| } | ||||
|  | ||||
| target "validate-docs" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/docs.Dockerfile" | ||||
|   target = "validate" | ||||
|   output = ["type=cacheonly"] | ||||
| } | ||||
|  | ||||
| target "validate-authors" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/authors.Dockerfile" | ||||
|   target = "validate" | ||||
|   output = ["type=cacheonly"] | ||||
| } | ||||
|  | ||||
| target "update-vendor" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/vendor.Dockerfile" | ||||
|   target = "update" | ||||
|   output = ["."] | ||||
| } | ||||
|  | ||||
| target "update-docs" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/docs.Dockerfile" | ||||
|   target = "update" | ||||
|   output = ["./docs/reference"] | ||||
| } | ||||
|  | ||||
| target "update-authors" { | ||||
|   inherits = ["_common"] | ||||
|   dockerfile = "./hack/dockerfiles/authors.Dockerfile" | ||||
|   target = "update" | ||||
|   output = ["."] | ||||
| } | ||||
|  | ||||
| target "test" { | ||||
|   inherits = ["_common"] | ||||
|   target = "test-coverage" | ||||
|   output = ["./coverage"] | ||||
| } | ||||
|  | ||||
| target "binaries" { | ||||
|   inherits = ["_common"] | ||||
|   target = "binaries" | ||||
|   output = [BIN_OUT] | ||||
|   platforms = ["local"] | ||||
| } | ||||
|  | ||||
| target "binaries-cross" { | ||||
|   inherits = ["binaries"] | ||||
|   platforms = [ | ||||
|     "darwin/amd64", | ||||
|     "darwin/arm64", | ||||
|     "linux/amd64", | ||||
|     "linux/arm/v6", | ||||
|     "linux/arm/v7", | ||||
|     "linux/arm64", | ||||
|     "linux/ppc64le", | ||||
|     "linux/riscv64", | ||||
|     "linux/s390x", | ||||
|     "windows/amd64", | ||||
|     "windows/arm64" | ||||
|   ] | ||||
| } | ||||
|  | ||||
| target "release" { | ||||
|   inherits = ["binaries-cross"] | ||||
|   target = "release" | ||||
|   output = [RELEASE_OUT] | ||||
| } | ||||
|  | ||||
| target "image" { | ||||
|   inherits = ["meta-helper", "binaries"] | ||||
|   output = ["type=image"] | ||||
| } | ||||
|  | ||||
| target "image-cross" { | ||||
|   inherits = ["meta-helper", "binaries-cross"] | ||||
|   output = ["type=image"] | ||||
| } | ||||
|  | ||||
| target "image-local" { | ||||
|   inherits = ["image"] | ||||
|   output = ["type=docker"] | ||||
| } | ||||
| @@ -1,16 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu | ||||
|  | ||||
| : ${TARGETPLATFORM=$CLI_PLATFORM} | ||||
|  | ||||
| platformFlag="" | ||||
| if [ -n "$TARGETPLATFORM" ]; then | ||||
|   platformFlag="--platform $TARGETPLATFORM" | ||||
| fi | ||||
|  | ||||
| buildxCmd build $platformFlag \ | ||||
|   --target "binaries" \ | ||||
|   --output "type=local,dest=./bin/" \ | ||||
|   . | ||||
| @@ -1,38 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| TYP=$1 | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -e | ||||
|  | ||||
| usage() { | ||||
|   echo "usage: ./hack/build_ci_first_pass <binaries>" | ||||
|   exit 1 | ||||
| } | ||||
|  | ||||
| if [ -z "$TYP" ]; then | ||||
|   usage | ||||
| fi | ||||
|  | ||||
| importCacheFlags="" | ||||
| exportCacheFlags="" | ||||
| if [ "$GITHUB_ACTIONS" = "true" ]; then | ||||
|   if [ -n "$cacheRefFrom" ]; then | ||||
|     importCacheFlags="--cache-from=type=local,src=$cacheRefFrom" | ||||
|   fi | ||||
|   if [ -n "$cacheRefTo" ]; then | ||||
|     exportCacheFlags="--cache-to=type=local,dest=$cacheRefTo" | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| case $TYP in | ||||
|   "binaries") | ||||
|     buildxCmd build $importCacheFlags $exportCacheFlags \ | ||||
|       --target "binaries" \ | ||||
|       $currentcontext | ||||
|     ;; | ||||
|   *) | ||||
|     echo >&2 "Unknown type $TYP" | ||||
|     exit 1 | ||||
|     ;; | ||||
| esac | ||||
							
								
								
									
										24
									
								
								hack/cross
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								hack/cross
									
									
									
									
									
								
							| @@ -1,24 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -e | ||||
|  | ||||
| : ${TARGETPLATFORM=linux/amd64,linux/arm/v7,linux/arm64,darwin/amd64,windows/amd64,linux/ppc64le,linux/s390x,linux/riscv64} | ||||
| : ${EXPORT_LOCAL=} | ||||
|  | ||||
| importCacheFlags="" | ||||
| if [ "$GITHUB_ACTIONS" = "true" ]; then | ||||
|   if [ -n "$cacheRefFrom" ]; then | ||||
|     importCacheFlags="--cache-from=type=local,src=$cacheRefFrom" | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| exportFlag="" | ||||
| if [ -n "$EXPORT_LOCAL" ]; then | ||||
|   exportFlag="--output=type=local,dest=$EXPORT_LOCAL" | ||||
| fi | ||||
|  | ||||
| buildxCmd build $importCacheFlags $exportFlag \ | ||||
|   --target "binaries" \ | ||||
|   --platform "$TARGETPLATFORM" \ | ||||
|   $currentcontext | ||||
| @@ -13,7 +13,3 @@ else | ||||
|   ( $dockerdCmd &>/var/log/dockerd.log & ) | ||||
|   exec ash | ||||
| fi | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										33
									
								
								hack/dockerfiles/authors.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								hack/dockerfiles/authors.Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| # syntax=docker/dockerfile:1.3-labs | ||||
|  | ||||
| FROM alpine:3.14 AS gen | ||||
| RUN apk add --no-cache git | ||||
| WORKDIR /src | ||||
| RUN --mount=type=bind,target=. <<EOT | ||||
| #!/usr/bin/env bash | ||||
| set -e | ||||
| mkdir /out | ||||
| # see also ".mailmap" for how email addresses and names are deduplicated | ||||
| { | ||||
|   echo "# This file lists all individuals having contributed content to the repository." | ||||
|   echo "# For how it is generated, see hack/dockerfiles/authors.Dockerfile." | ||||
|   echo | ||||
|   git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf | ||||
| } > /out/AUTHORS | ||||
| cat /out/AUTHORS | ||||
| EOT | ||||
|  | ||||
| FROM scratch AS update | ||||
| COPY --from=gen /out / | ||||
|  | ||||
| FROM gen AS validate | ||||
| RUN --mount=type=bind,target=.,rw <<EOT | ||||
| set -e | ||||
| git add -A | ||||
| cp -rf /out/* . | ||||
| if [ -n "$(git status --porcelain -- AUTHORS)" ]; then | ||||
|   echo >&2 'ERROR: Authors result differs. Please update with "make authors"' | ||||
|   git status --porcelain -- AUTHORS | ||||
|   exit 1 | ||||
| fi | ||||
| EOT | ||||
| @@ -1,4 +1,4 @@ | ||||
| # syntax=docker/dockerfile:1.3 | ||||
| # syntax=docker/dockerfile:1.3-labs | ||||
|  | ||||
| ARG GO_VERSION=1.17.0 | ||||
|  | ||||
| @@ -13,19 +13,28 @@ RUN apk add --no-cache rsync git | ||||
| WORKDIR /src | ||||
| COPY --from=docsgen /out/docsgen /usr/bin | ||||
| RUN --mount=target=/context \ | ||||
|   --mount=target=.,type=tmpfs,readwrite  \ | ||||
|   rsync -a /context/. . && \ | ||||
|   docsgen && \ | ||||
|   mkdir /out && cp -r docs/reference /out | ||||
|   --mount=target=.,type=tmpfs <<EOT | ||||
| set -e | ||||
| rsync -a /context/. . | ||||
| docsgen | ||||
| mkdir /out | ||||
| cp -r docs/reference /out | ||||
| EOT | ||||
|  | ||||
| FROM scratch AS update | ||||
| COPY --from=gen /out /out | ||||
|  | ||||
| FROM gen AS validate | ||||
| RUN --mount=target=/context \ | ||||
|   --mount=target=.,type=tmpfs,readwrite  \ | ||||
|   rsync -a /context/. . && \ | ||||
|   git add -A && \ | ||||
|   rm -rf docs/reference/* && \ | ||||
|   cp -rf /out/* ./docs/ && \ | ||||
|   ./hack/validate-docs check | ||||
|   --mount=target=.,type=tmpfs <<EOT | ||||
| set -e | ||||
| rsync -a /context/. . | ||||
| git add -A | ||||
| rm -rf docs/reference/* | ||||
| cp -rf /out/* ./docs/ | ||||
| if [ -n "$(git status --porcelain -- docs/reference)" ]; then | ||||
|   echo >&2 'ERROR: Docs result differs. Please update with "make docs"' | ||||
|   git status --porcelain -- docs/reference | ||||
|   exit 1 | ||||
| fi | ||||
| EOT | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # syntax=docker/dockerfile:1.3 | ||||
| # syntax=docker/dockerfile:1.3-labs | ||||
|  | ||||
| ARG GO_VERSION=1.17.0 | ||||
|  | ||||
| @@ -6,20 +6,30 @@ FROM golang:${GO_VERSION}-alpine AS vendored | ||||
| RUN  apk add --no-cache git rsync | ||||
| WORKDIR /src | ||||
| RUN --mount=target=/context \ | ||||
|   --mount=target=.,type=tmpfs,readwrite  \ | ||||
|   --mount=target=/go/pkg/mod,type=cache \ | ||||
|   rsync -a /context/. . && \ | ||||
|   go mod tidy && go mod vendor && \ | ||||
|   mkdir /out && cp -r go.mod go.sum vendor /out | ||||
|   --mount=target=.,type=tmpfs  \ | ||||
|   --mount=target=/go/pkg/mod,type=cache <<EOT | ||||
| set -e | ||||
| rsync -a /context/. . | ||||
| go mod tidy | ||||
| go mod vendor | ||||
| mkdir /out | ||||
| cp -r go.mod go.sum vendor /out | ||||
| EOT | ||||
|  | ||||
| FROM scratch AS update | ||||
| COPY --from=vendored /out /out | ||||
|  | ||||
| FROM vendored AS validate | ||||
| RUN --mount=target=/context \ | ||||
|   --mount=target=.,type=tmpfs,readwrite  \ | ||||
|   rsync -a /context/. . && \ | ||||
|   git add -A && \ | ||||
|   rm -rf vendor && \ | ||||
|   cp -rf /out/* . && \ | ||||
|   ./hack/validate-vendor check | ||||
|   --mount=target=.,type=tmpfs <<EOT | ||||
| set -e | ||||
| rsync -a /context/. . | ||||
| git add -A | ||||
| rm -rf vendor | ||||
| cp -rf /out/* . | ||||
| if [ -n "$(git status --porcelain -- go.mod go.sum vendor)" ]; then | ||||
|   echo >&2 'ERROR: Vendor result differs. Please vendor your package with "make vendor"' | ||||
|   git status --porcelain -- go.mod go.sum vendor | ||||
|   exit 1 | ||||
| fi | ||||
| EOT | ||||
|   | ||||
| @@ -1,21 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| set -eu -o pipefail -x | ||||
|  | ||||
| if [ -x "$(command -v greadlink)" ]; then | ||||
| 	# on macOS, GNU readlink is ava (greadlink) can be installed through brew install coreutils | ||||
| 	cd "$(dirname "$(greadlink -f "$BASH_SOURCE")")/.." | ||||
| else | ||||
| 	cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." | ||||
| fi | ||||
|  | ||||
| # see also ".mailmap" for how email addresses and names are deduplicated | ||||
|  | ||||
| { | ||||
| 	cat <<-'EOH' | ||||
| 	# This file lists all individuals having contributed content to the repository. | ||||
| 	# For how it is generated, see `scripts/generate-authors.sh`. | ||||
| 	EOH | ||||
| 	echo | ||||
| 	git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf | ||||
| } > AUTHORS | ||||
| @@ -1,6 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu | ||||
|  | ||||
| buildxCmd build --file ./hack/dockerfiles/lint.Dockerfile . | ||||
							
								
								
									
										39
									
								
								hack/release
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								hack/release
									
									
									
									
									
								
							| @@ -1,37 +1,20 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| OUT=${1:-release-out} | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu -o pipefail | ||||
|  | ||||
| : ${PLATFORMS=linux/amd64} | ||||
| : ${CHECKSUMS=} | ||||
| : ${BUILDX_CMD=docker buildx} | ||||
| : ${RELEASE_OUT=./release-out} | ||||
|  | ||||
| importCacheFlags="" | ||||
| if [[ -n "$cacheRefFrom" ]] && [[ "$cacheType" = "local" ]]; then | ||||
|   for ref in $cacheRefFrom; do | ||||
|     importCacheFlags="$importCacheFlags--cache-from=type=local,src=$ref " | ||||
|   done | ||||
| fi | ||||
|  | ||||
| buildxCmd build $importCacheFlags \ | ||||
|   --target "release" \ | ||||
|   --platform "$PLATFORMS" \ | ||||
|   --output "type=local,dest=$OUT" \ | ||||
|   $currentcontext | ||||
| # release | ||||
| (set -x ; ${BUILDX_CMD} bake --set "*.output=$RELEASE_OUT" release) | ||||
|  | ||||
| # wrap binaries | ||||
| { set +x; } 2>/dev/null | ||||
| if [[ $PLATFORMS =~ "," ]]; then | ||||
|   mv -f ./$OUT/**/* ./$OUT/ | ||||
|   find ./$OUT -type d -empty -delete | ||||
| fi | ||||
| mv -f ./${RELEASE_OUT}/**/* ./${RELEASE_OUT}/ | ||||
| find ./${RELEASE_OUT} -type d -empty -delete | ||||
|  | ||||
| if [ -n "$CHECKSUMS" ]; then | ||||
|   if ! type shasum > /dev/null 2>&1; then | ||||
|     echo >&2 "ERROR: shasum is required" | ||||
|     exit 1 | ||||
|   fi | ||||
|   find ./$OUT/ -type f \( -iname "buildx-*" ! -iname "*darwin*" \) -print0 | sort -z | xargs -r0 shasum -a 256 -b | sed 's# .*/# #' > ./$OUT/checksums.txt | ||||
| # checksums | ||||
| if ! type shasum > /dev/null 2>&1; then | ||||
|   echo >&2 "ERROR: shasum is required" | ||||
|   exit 1 | ||||
| fi | ||||
| find ./${RELEASE_OUT}/ -type f \( -iname "buildx-*" ! -iname "*darwin*" \) -print0 | sort -z | xargs -r0 shasum -a 256 -b | sed 's# .*/# #' > ./${RELEASE_OUT}/checksums.txt | ||||
|   | ||||
							
								
								
									
										11
									
								
								hack/shell
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								hack/shell
									
									
									
									
									
								
							| @@ -2,17 +2,18 @@ | ||||
|  | ||||
| set -e | ||||
|  | ||||
| : ${BUILDX_CMD=docker buildx} | ||||
| : ${TMUX=} | ||||
|  | ||||
| function clean { | ||||
|   docker rmi $(cat $iidfile) | ||||
|   docker rmi $iid | ||||
| } | ||||
|  | ||||
| iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX) | ||||
| DOCKER_BUILDKIT=1 docker build --iidfile $iidfile --target demo-env . | ||||
| iid=buildx-shell | ||||
| (set -x ; ${BUILDX_CMD} build --output "type=docker,name=$iid" --target shell .) | ||||
| trap clean EXIT | ||||
| SSH= | ||||
| if [ -n "$MOUNT_SSH_AUTH_SOCK" ]; then | ||||
| 	SSH="-v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK -e SSH_AUTH_SOCK" | ||||
|   SSH="-v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK -e SSH_AUTH_SOCK" | ||||
| fi | ||||
| docker run $SSH -it --privileged --rm -e TMUX_ENTRYPOINT=$TMUX $(cat $iidfile) | ||||
| docker run $SSH -it --privileged --rm -e TMUX_ENTRYPOINT=$TMUX $iid | ||||
|   | ||||
							
								
								
									
										47
									
								
								hack/test
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								hack/test
									
									
									
									
									
								
							| @@ -1,47 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu -o pipefail | ||||
|  | ||||
| : ${BUILDX_NOCACHE=} | ||||
| : ${TEST_COVERAGE=} | ||||
|  | ||||
| importCacheFlags="" | ||||
| if [ -n "$cacheRefFrom" ]; then | ||||
|   if [ "$cacheType" = "local" ]; then | ||||
|     for ref in $cacheRefFrom; do | ||||
|       importCacheFlags="$importCacheFlags--cache-from=type=local,src=$ref " | ||||
|     done | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| iid="buildx-tests" | ||||
| iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX) | ||||
|  | ||||
| coverageVol="" | ||||
| coverageFlags="" | ||||
| if [ "$TEST_COVERAGE" = "1" ]; then | ||||
|   covdir="$(pwd)/coverage" | ||||
|   mkdir -p "$covdir" | ||||
|   coverageVol="-v $covdir:/coverage" | ||||
|   coverageFlags="-coverprofile=/coverage/coverage.txt -covermode=atomic" | ||||
| fi | ||||
|  | ||||
| buildxCmd build $importCacheFlags \ | ||||
|   --target "integration-tests" \ | ||||
|   --output "type=docker,name=$iid" \ | ||||
|   $currentcontext | ||||
|  | ||||
| cacheVolume="buildx-cache" | ||||
| if ! docker inspect "$cacheVolume" > /dev/null 2>&1; then | ||||
|   cacheVolume=$(docker create --name=buildx-cache -v /root/.cache -v /go/pkg/mod alpine) | ||||
| fi | ||||
|  | ||||
| docker run --rm -v /tmp $coverageVol --volumes-from=$cacheVolume --privileged $iid go test $coverageFlags ${TESTFLAGS:--v} ${TESTPKGS:-./...} | ||||
|  | ||||
| if [ -n "$BUILDX_NOCACHE" ]; then | ||||
|   docker rm -v $cacheVolume | ||||
| fi | ||||
|  | ||||
| rm "$iidfile" | ||||
| docker rmi $iid | ||||
| @@ -1,16 +1,11 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu | ||||
| set -eu -o pipefail | ||||
|  | ||||
| : ${BUILDX_CMD=docker buildx} | ||||
|  | ||||
| output=$(mktemp -d -t buildx-output.XXXXXXXXXX) | ||||
|  | ||||
| buildxCmd build \ | ||||
|   --target "update" \ | ||||
|   --output "type=local,dest=$output" \ | ||||
|   --file "./hack/dockerfiles/docs.Dockerfile" \ | ||||
|   . | ||||
|  | ||||
| (set -x ; ${BUILDX_CMD} bake --set "*.output=$output" update-docs) | ||||
| rm -rf ./docs/reference/* | ||||
| cp -R "$output"/out/* ./docs/ | ||||
| rm -rf $output | ||||
|   | ||||
| @@ -1,16 +1,11 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| . $(dirname $0)/util | ||||
| set -eu | ||||
| set -eu -o pipefail | ||||
|  | ||||
| : ${BUILDX_CMD=docker buildx} | ||||
|  | ||||
| output=$(mktemp -d -t buildx-output.XXXXXXXXXX) | ||||
|  | ||||
| buildxCmd build \ | ||||
|   --target "update" \ | ||||
|   --output "type=local,dest=$output" \ | ||||
|   --file "./hack/dockerfiles/vendor.Dockerfile" \ | ||||
|   . | ||||
|  | ||||
| (set -x ; ${BUILDX_CMD} bake --set "*.output=$output" update-vendor) | ||||
| rm -rf ./vendor | ||||
| cp -R "$output"/out/* . | ||||
| rm -rf $output | ||||
|   | ||||
							
								
								
									
										66
									
								
								hack/util
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								hack/util
									
									
									
									
									
								
							| @@ -1,66 +0,0 @@ | ||||
| #!/usr/bin/env sh | ||||
|  | ||||
| : ${CI=} | ||||
| : ${PREFER_BUILDCTL=} | ||||
| : ${PREFER_LEGACY=} | ||||
| : ${CLI_PLATFORM=} | ||||
| : ${GITHUB_ACTIONS=} | ||||
| : ${CACHEDIR_FROM=} | ||||
| : ${CACHEDIR_TO=} | ||||
|  | ||||
| if [ "$PREFER_BUILDCTL" = "1" ]; then | ||||
|   echo >&2 "WARNING: PREFER_BUILDCTL is no longer supported. Ignoring." | ||||
| fi | ||||
|  | ||||
| if [ "$PREFER_LEGACY" = "1" ]; then | ||||
|   echo >&2 "WARNING: PREFER_LEGACY is no longer supported. Ignoring." | ||||
| fi | ||||
|  | ||||
| progressFlag="" | ||||
| if [ "$CI" = "true" ]; then | ||||
|   progressFlag="--progress=plain" | ||||
| fi | ||||
|  | ||||
| buildxCmd() { | ||||
|   if docker buildx version >/dev/null 2>&1; then | ||||
|     set -x | ||||
|     docker buildx "$@" $progressFlag | ||||
|   elif buildx version >/dev/null 2>&1; then | ||||
|     set -x | ||||
|     buildx "$@" $progressFlag | ||||
|   elif docker version >/dev/null 2>&1; then | ||||
|     set -x | ||||
|     DOCKER_BUILDKIT=1 docker "$@" $progressFlag | ||||
|   else | ||||
|     echo >&2 "ERROR: Please enable DOCKER_BUILDKIT or install standalone buildx" | ||||
|     exit 1 | ||||
|   fi | ||||
| } | ||||
|  | ||||
| if [ -z "$CLI_PLATFORM" ]; then | ||||
|   if [ "$(uname -s)" = "Darwin" ]; then | ||||
|       arch="$(uname -m)" | ||||
|       if [ "$arch" = "x86_64" ]; then | ||||
|           arch="amd64" | ||||
|       fi | ||||
|       CLI_PLATFORM="darwin/$arch" | ||||
|   elif uname -s | grep MINGW > /dev/null 2>&1 ; then | ||||
|     CLI_PLATFORM="windows/amd64" | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| cacheType="" | ||||
| cacheRefFrom="" | ||||
| cacheRefTo="" | ||||
| currentref="" | ||||
| if [ "$GITHUB_ACTIONS" = "true" ]; then | ||||
|   currentref="git://github.com/$GITHUB_REPOSITORY#$GITHUB_REF" | ||||
|   cacheType="local" | ||||
|   cacheRefFrom="$CACHEDIR_FROM" | ||||
|   cacheRefTo="$CACHEDIR_TO" | ||||
| fi | ||||
|  | ||||
| currentcontext="." | ||||
| if [ -n "$currentref" ]; then | ||||
|   currentcontext="--build-arg BUILDKIT_CONTEXT_KEEP_GIT_DIR=1 $currentref" | ||||
| fi | ||||
| @@ -1,29 +0,0 @@ | ||||
| #!/usr/bin/env sh | ||||
| set -eu | ||||
|  | ||||
| case ${1:-} in | ||||
|   '') | ||||
|     . $(dirname $0)/util | ||||
|     buildxCmd build \ | ||||
|       --target validate \ | ||||
|       --file ./hack/dockerfiles/docs.Dockerfile \ | ||||
|       . | ||||
|     ;; | ||||
|   check) | ||||
|     status="$(git status --porcelain -- docs/reference 2>/dev/null)" | ||||
|     diffs=$(echo "$status" | grep -v '^[RAD] ' || true) | ||||
|     if [ "$diffs" ]; then | ||||
|       { | ||||
|         set +x | ||||
|         echo 'The result of ./hack/update-docs differs' | ||||
|         echo | ||||
|         echo "$diffs" | ||||
|         echo | ||||
|         echo 'Please vendor your package with ./hack/update-docs' | ||||
|         echo | ||||
|       } >&2 | ||||
|       exit 1 | ||||
|     fi | ||||
|     echo 'Congratulations! All docs changes are done the right way.' | ||||
|     ;; | ||||
| esac | ||||
| @@ -1,29 +0,0 @@ | ||||
| #!/usr/bin/env sh | ||||
| set -eu | ||||
|  | ||||
| case ${1:-} in | ||||
|   '') | ||||
|     . $(dirname $0)/util | ||||
|     buildxCmd build \ | ||||
|       --target validate \ | ||||
|       --file ./hack/dockerfiles/vendor.Dockerfile \ | ||||
|       . | ||||
|     ;; | ||||
|   check) | ||||
|     status="$(git status --porcelain -- go.mod go.sum vendor 2>/dev/null)" | ||||
|     diffs=$(echo "$status" | grep -v '^[RAD] ' || true) | ||||
|     if [ "$diffs" ]; then | ||||
|       { | ||||
|         set +x | ||||
|         echo 'The result of "make vendor" differs' | ||||
|         echo | ||||
|         echo "$diffs" | ||||
|         echo | ||||
|         echo 'Please vendor your package with "make vendor"' | ||||
|         echo | ||||
|       } >&2 | ||||
|       exit 1 | ||||
|     fi | ||||
|     echo 'Congratulations! All vendoring changes are done the right way.' | ||||
|     ;; | ||||
| esac | ||||
		Reference in New Issue
	
	Block a user
	 CrazyMax
					CrazyMax