diff --git a/content/manuals/build/release-notes/0.30.0.md b/content/manuals/build/release-notes/0.30.0.md new file mode 100644 index 000000000000..26fa4c4ea381 --- /dev/null +++ b/content/manuals/build/release-notes/0.30.0.md @@ -0,0 +1,376 @@ +--- +title: Buildx v0.30.0 +description: Release notes for Docker Buildx v0.30.0 +keywords: buildx, docker, build, release notes, v0.30.0 +date: 2025-11-12 +type: release-note +params: + github_url: https://github.com/docker/buildx/releases/tag/v0.30.0 + tag: v0.30.0 + prerelease: false + author: github-actions[bot] + assets: + - name: "buildx-v0.30.0.darwin-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64" + size: 73329184 + downloadCount: 280 + - name: "buildx-v0.30.0.darwin-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64.provenance.json" + size: 49376 + downloadCount: 9 + - name: "buildx-v0.30.0.darwin-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64.sbom.json" + size: 294041 + downloadCount: 8 + - name: "buildx-v0.30.0.darwin-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64" + size: 68953200 + downloadCount: 503 + - name: "buildx-v0.30.0.darwin-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64.provenance.json" + size: 49376 + downloadCount: 8 + - name: "buildx-v0.30.0.darwin-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64.sbom.json" + size: 294041 + downloadCount: 7 + - name: "buildx-v0.30.0.freebsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64" + size: 70971586 + downloadCount: 17 + - name: "buildx-v0.30.0.freebsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64.provenance.json" + size: 49379 + downloadCount: 7 + - name: "buildx-v0.30.0.freebsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64.sbom.json" + size: 294042 + downloadCount: 7 + - name: "buildx-v0.30.0.freebsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64" + size: 66715842 + downloadCount: 13 + - name: "buildx-v0.30.0.freebsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64.provenance.json" + size: 49379 + downloadCount: 6 + - name: "buildx-v0.30.0.freebsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64.sbom.json" + size: 294042 + downloadCount: 8 + - name: "buildx-v0.30.0.linux-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64" + size: 71069880 + downloadCount: 84439 + - name: "buildx-v0.30.0.linux-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64.provenance.json" + size: 49372 + downloadCount: 355 + - name: "buildx-v0.30.0.linux-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64.sbom.json" + size: 295778 + downloadCount: 351 + - name: "buildx-v0.30.0.linux-arm-v6" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6" + size: 67043512 + downloadCount: 1435 + - name: "buildx-v0.30.0.linux-arm-v6.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6.provenance.json" + size: 49376 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-arm-v6.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6.sbom.json" + size: 295779 + downloadCount: 8 + - name: "buildx-v0.30.0.linux-arm-v7" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7" + size: 66977976 + downloadCount: 40 + - name: "buildx-v0.30.0.linux-arm-v7.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7.provenance.json" + size: 49376 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-arm-v7.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7.sbom.json" + size: 295779 + downloadCount: 8 + - name: "buildx-v0.30.0.linux-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64" + size: 66846904 + downloadCount: 14383 + - name: "buildx-v0.30.0.linux-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64.provenance.json" + size: 49373 + downloadCount: 19 + - name: "buildx-v0.30.0.linux-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64.sbom.json" + size: 295778 + downloadCount: 10 + - name: "buildx-v0.30.0.linux-ppc64le" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le" + size: 70647992 + downloadCount: 105 + - name: "buildx-v0.30.0.linux-ppc64le.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le.provenance.json" + size: 49379 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-ppc64le.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le.sbom.json" + size: 295780 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-riscv64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64" + size: 67829944 + downloadCount: 17 + - name: "buildx-v0.30.0.linux-riscv64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64.provenance.json" + size: 49379 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-riscv64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64.sbom.json" + size: 295780 + downloadCount: 7 + - name: "buildx-v0.30.0.linux-s390x" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x" + size: 75366584 + downloadCount: 106 + - name: "buildx-v0.30.0.linux-s390x.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x.provenance.json" + size: 49373 + downloadCount: 8 + - name: "buildx-v0.30.0.linux-s390x.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x.sbom.json" + size: 295778 + downloadCount: 7 + - name: "buildx-v0.30.0.netbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64" + size: 70938827 + downloadCount: 11 + - name: "buildx-v0.30.0.netbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64.provenance.json" + size: 49376 + downloadCount: 6 + - name: "buildx-v0.30.0.netbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64.sbom.json" + size: 294041 + downloadCount: 7 + - name: "buildx-v0.30.0.netbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64" + size: 66715851 + downloadCount: 10 + - name: "buildx-v0.30.0.netbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64.provenance.json" + size: 49376 + downloadCount: 6 + - name: "buildx-v0.30.0.netbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64.sbom.json" + size: 294041 + downloadCount: 7 + - name: "buildx-v0.30.0.openbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64" + size: 70979896 + downloadCount: 12 + - name: "buildx-v0.30.0.openbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64.provenance.json" + size: 49379 + downloadCount: 6 + - name: "buildx-v0.30.0.openbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64.sbom.json" + size: 294042 + downloadCount: 7 + - name: "buildx-v0.30.0.openbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64" + size: 66715960 + downloadCount: 9 + - name: "buildx-v0.30.0.openbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64.provenance.json" + size: 49378 + downloadCount: 6 + - name: "buildx-v0.30.0.openbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64.sbom.json" + size: 294042 + downloadCount: 7 + - name: "buildx-v0.30.0.windows-amd64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-amd64.exe" + size: 72952832 + downloadCount: 791 + - name: "buildx-v0.30.0.windows-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-amd64.provenance.json" + size: 49387 + downloadCount: 20 + - name: "buildx-v0.30.0.windows-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-amd64.sbom.json" + size: 300561 + downloadCount: 19 + - name: "buildx-v0.30.0.windows-arm64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-arm64.exe" + size: 67650048 + downloadCount: 118 + - name: "buildx-v0.30.0.windows-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-arm64.provenance.json" + size: 49386 + downloadCount: 7 + - name: "buildx-v0.30.0.windows-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-arm64.sbom.json" + size: 300561 + downloadCount: 7 + - name: "checksums.txt" + url: "https://github.com/docker/buildx/releases/download/v0.30.0/checksums.txt" + size: 4643 + downloadCount: 1009 +--- + + +buildx 0.30.0 + +Welcome to the v0.30.0 release of buildx! + + + +Please try out the release binaries and report any issues at +https://github.com/docker/buildx/issues. + +### Contributors + +* CrazyMax +* Tõnis Tiigi +* Jonathan A. Sternberg +* Remy Suen +* Sebastiaan van Stijn +* aevesdocker +* Akihiro Suda +* Guillaume Lours +* Ricardo Branco +* Roberto Castellotti +* Roberto Villarreal + +### Notable Changes + +- Tar exporter output will now automatically create parent directories. #3478 +- Deprecate `docker buildx install` and `docker buildx uninstall` in favor of using `docker buildx` directly without relying on the `docker builder` aliases. #3472 +- Clarify CLI help for the `--tag` option to give more guidance on a valid argument. #3454 +- Bake: Ensure typed variables with no value still carry type to prevent a panic. #3463 +- `imagetools create` now persists attestation manifest and any manifest cosign-based signatures when creating new images. #3433 +- Add option to `docker-container` driver to write github actions payload for provenance with `--driver-opt=provenance-add-gha=true`. #3453 +- Avoid concurrent map write panic with `imagetools create`. #3510 +- Avoid panic when linking a nil target to another build in Bake. #3511 +- DAP: Next, step in, and step out requests now respect breakpoints. #3488 +- DAP: Verify breakpoints when `stopOnEntry` is used. #3488 +- DAP: Support `runInTerminal` reverse request when `buildx dap` is run in standalone mode. #3471 +- DAP: Stop sending null in `setBreakpoints` response when the breakpoints are cleared to conform to the specification. #3481 +- DAP: `exec` command now works when suspended on a `COPY` line. #3469 +- DAP: Debugger now ensures that all inputs are properly executed when suspended on a line. #3469 +- DAP: Debugger now pauses on `COPY` lines when there is a non-existent file. #3437 +- Compose support has been updated to v2.9.1. #3494 + +### Dependency Changes + +* **github.com/aws/aws-sdk-go-v2** v1.30.3 -> v1.38.1 +* **github.com/aws/aws-sdk-go-v2/config** v1.27.27 -> v1.31.3 +* **github.com/aws/aws-sdk-go-v2/credentials** v1.17.27 -> v1.18.7 +* **github.com/aws/aws-sdk-go-v2/feature/ec2/imds** v1.16.11 -> v1.18.4 +* **github.com/aws/aws-sdk-go-v2/internal/configsources** v1.3.15 -> v1.4.4 +* **github.com/aws/aws-sdk-go-v2/internal/endpoints/v2** v2.6.15 -> v2.7.4 +* **github.com/aws/aws-sdk-go-v2/internal/ini** v1.8.0 -> v1.8.3 +* **github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding** v1.11.3 -> v1.13.0 +* **github.com/aws/aws-sdk-go-v2/service/internal/presigned-url** v1.11.17 -> v1.13.4 +* **github.com/aws/aws-sdk-go-v2/service/sso** v1.22.4 -> v1.28.2 +* **github.com/aws/aws-sdk-go-v2/service/ssooidc** v1.26.4 -> v1.34.0 +* **github.com/aws/aws-sdk-go-v2/service/sts** v1.30.3 -> v1.38.0 +* **github.com/aws/smithy-go** v1.20.3 -> v1.22.5 +* **github.com/cenkalti/backoff/v5** v5.0.3 **_new_** +* **github.com/compose-spec/compose-go/v2** v2.9.0 -> v2.9.1 +* **github.com/containerd/containerd/api** v1.9.0 -> v1.10.0 +* **github.com/containerd/containerd/v2** v2.1.4 -> v2.2.0 +* **github.com/containerd/platforms** v1.0.0-rc.1 -> v1.0.0-rc.2 +* **github.com/docker/cli** v28.4.0 -> v28.5.1 +* **github.com/docker/docker** v28.4.0 -> v28.5.1 +* **github.com/emicklei/go-restful/v3** v3.11.0 -> v3.13.0 +* **github.com/fxamacker/cbor/v2** v2.7.0 -> v2.9.0 +* **github.com/go-logr/logr** v1.4.2 -> v1.4.3 +* **github.com/gofrs/flock** v0.12.1 -> v0.13.0 +* **github.com/google/gnostic-models** v0.6.8 -> v0.7.0 +* **github.com/gorilla/websocket** v1.5.0 -> e064f32e3674 +* **github.com/grpc-ecosystem/grpc-gateway/v2** v2.26.1 -> v2.27.2 +* **github.com/klauspost/compress** v1.18.0 -> v1.18.1 +* **github.com/moby/buildkit** v0.25.0 -> v0.26.0 +* **github.com/modern-go/reflect2** v1.0.2 -> 35a7c28c31ee +* **github.com/secure-systems-lab/go-securesystemslib** v0.6.0 -> v0.9.1 +* **github.com/stretchr/testify** v1.11.0 -> v1.11.1 +* **go.opentelemetry.io/auto/sdk** v1.1.0 -> v1.2.1 +* **go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc** v0.60.0 -> v0.61.0 +* **go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace** v0.60.0 -> v0.61.0 +* **go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp** v0.60.0 -> v0.61.0 +* **go.opentelemetry.io/otel** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/exporters/otlp/otlptrace** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/metric** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/sdk** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/sdk/metric** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/otel/trace** v1.35.0 -> v1.38.0 +* **go.opentelemetry.io/proto/otlp** v1.5.0 -> v1.7.1 +* **go.yaml.in/yaml/v2** v2.4.2 **_new_** +* **golang.org/x/crypto** v0.38.0 -> v0.42.0 +* **golang.org/x/mod** v0.24.0 -> v0.29.0 +* **golang.org/x/net** v0.39.0 -> v0.44.0 +* **golang.org/x/oauth2** v0.29.0 -> v0.30.0 +* **golang.org/x/sync** v0.16.0 -> v0.17.0 +* **golang.org/x/sys** v0.33.0 -> v0.37.0 +* **golang.org/x/term** v0.32.0 -> v0.35.0 +* **golang.org/x/text** v0.25.0 -> v0.29.0 +* **golang.org/x/time** v0.11.0 -> v0.14.0 +* **golang.org/x/tools** v0.32.0 -> v0.37.0 +* **google.golang.org/genproto/googleapis/api** 56aae31c358a -> c5933d9347a5 +* **google.golang.org/genproto/googleapis/rpc** 56aae31c358a -> c5933d9347a5 +* **google.golang.org/grpc** v1.72.2 -> v1.76.0 +* **google.golang.org/protobuf** v1.36.9 -> v1.36.10 +* **k8s.io/api** v0.32.3 -> v0.34.1 +* **k8s.io/apimachinery** v0.32.3 -> v0.34.1 +* **k8s.io/client-go** v0.32.3 -> v0.34.1 +* **k8s.io/kube-openapi** 32ad38e42d3f -> f3f2b991d03b +* **k8s.io/utils** 3ea5e8cea738 -> 4c0f3b243397 +* **sigs.k8s.io/json** 9aa6b5e7a4b3 -> cfa47c3a1cc8 +* **sigs.k8s.io/randfill** v1.0.0 **_new_** +* **sigs.k8s.io/structured-merge-diff/v6** v6.3.0 **_new_** +* **sigs.k8s.io/yaml** v1.4.0 -> v1.6.0 + +Previous release can be found at [v0.29.1](https://github.com/docker/buildx/releases/tag/v0.29.1) + +## Downloads + +### Binaries + +| File | Artifacts | Size | +|------|-----------|------| +| [`buildx-v0.30.0.darwin-amd64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-amd64.sbom.json) | 69.9 MB | +| [`buildx-v0.30.0.darwin-arm64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.darwin-arm64.sbom.json) | 65.8 MB | +| [`buildx-v0.30.0.freebsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.0.freebsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.freebsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.0.linux-amd64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-amd64.sbom.json) | 67.8 MB | +| [`buildx-v0.30.0.linux-arm-v6`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v6.sbom.json) | 63.9 MB | +| [`buildx-v0.30.0.linux-arm-v7`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm-v7.sbom.json) | 63.9 MB | +| [`buildx-v0.30.0.linux-arm64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-arm64.sbom.json) | 63.8 MB | +| [`buildx-v0.30.0.linux-ppc64le`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-ppc64le.sbom.json) | 67.4 MB | +| [`buildx-v0.30.0.linux-riscv64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-riscv64.sbom.json) | 64.7 MB | +| [`buildx-v0.30.0.linux-s390x`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.linux-s390x.sbom.json) | 71.9 MB | +| [`buildx-v0.30.0.netbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.0.netbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.netbsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.0.openbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.0.openbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.openbsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.0.windows-amd64.exe`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-amd64.exe) | - | 69.6 MB | +| [`buildx-v0.30.0.windows-arm64.exe`](https://github.com/docker/buildx/releases/download/v0.30.0/buildx-v0.30.0.windows-arm64.exe) | - | 64.5 MB | + +### Checksums + +- [`checksums.txt`](https://github.com/docker/buildx/releases/download/v0.30.0/checksums.txt) (4.5 KB) + +To verify downloads, check the checksum file and compare with your downloaded file: + +```console +$ sha256sum -c checksums.txt +``` + +[View on GitHub](https://github.com/docker/buildx/releases/tag/v0.30.0) diff --git a/content/manuals/build/release-notes/0.30.1.md b/content/manuals/build/release-notes/0.30.1.md new file mode 100644 index 000000000000..eab0598a6f3d --- /dev/null +++ b/content/manuals/build/release-notes/0.30.1.md @@ -0,0 +1,283 @@ +--- +title: Buildx v0.30.1 +description: Release notes for Docker Buildx v0.30.1 +keywords: buildx, docker, build, release notes, v0.30.1 +date: 2025-11-17 +type: release-note +params: + github_url: https://github.com/docker/buildx/releases/tag/v0.30.1 + tag: v0.30.1 + prerelease: false + author: github-actions[bot] + assets: + - name: "buildx-v0.30.1.darwin-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64" + size: 73329184 + downloadCount: 4149 + - name: "buildx-v0.30.1.darwin-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64.provenance.json" + size: 49272 + downloadCount: 42 + - name: "buildx-v0.30.1.darwin-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64.sbom.json" + size: 294131 + downloadCount: 25 + - name: "buildx-v0.30.1.darwin-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64" + size: 68953216 + downloadCount: 6491 + - name: "buildx-v0.30.1.darwin-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64.provenance.json" + size: 49272 + downloadCount: 26 + - name: "buildx-v0.30.1.darwin-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64.sbom.json" + size: 294131 + downloadCount: 22 + - name: "buildx-v0.30.1.freebsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64" + size: 70971586 + downloadCount: 101 + - name: "buildx-v0.30.1.freebsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64.provenance.json" + size: 49275 + downloadCount: 22 + - name: "buildx-v0.30.1.freebsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64.sbom.json" + size: 294132 + downloadCount: 19 + - name: "buildx-v0.30.1.freebsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64" + size: 66715842 + downloadCount: 70 + - name: "buildx-v0.30.1.freebsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64.provenance.json" + size: 49275 + downloadCount: 12 + - name: "buildx-v0.30.1.freebsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64.sbom.json" + size: 294132 + downloadCount: 14 + - name: "buildx-v0.30.1.linux-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64" + size: 71069880 + downloadCount: 1014788 + - name: "buildx-v0.30.1.linux-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64.provenance.json" + size: 49269 + downloadCount: 3584 + - name: "buildx-v0.30.1.linux-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64.sbom.json" + size: 295868 + downloadCount: 1888 + - name: "buildx-v0.30.1.linux-arm-v6" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6" + size: 67043512 + downloadCount: 64179 + - name: "buildx-v0.30.1.linux-arm-v6.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6.provenance.json" + size: 49272 + downloadCount: 15 + - name: "buildx-v0.30.1.linux-arm-v6.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6.sbom.json" + size: 295869 + downloadCount: 14 + - name: "buildx-v0.30.1.linux-arm-v7" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7" + size: 66977976 + downloadCount: 482 + - name: "buildx-v0.30.1.linux-arm-v7.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7.provenance.json" + size: 49272 + downloadCount: 26 + - name: "buildx-v0.30.1.linux-arm-v7.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7.sbom.json" + size: 295869 + downloadCount: 26 + - name: "buildx-v0.30.1.linux-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64" + size: 66846904 + downloadCount: 189217 + - name: "buildx-v0.30.1.linux-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64.provenance.json" + size: 49269 + downloadCount: 1734 + - name: "buildx-v0.30.1.linux-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64.sbom.json" + size: 295868 + downloadCount: 50 + - name: "buildx-v0.30.1.linux-ppc64le" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le" + size: 70647992 + downloadCount: 2431 + - name: "buildx-v0.30.1.linux-ppc64le.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le.provenance.json" + size: 49275 + downloadCount: 13 + - name: "buildx-v0.30.1.linux-ppc64le.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le.sbom.json" + size: 295870 + downloadCount: 12 + - name: "buildx-v0.30.1.linux-riscv64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64" + size: 67829944 + downloadCount: 111 + - name: "buildx-v0.30.1.linux-riscv64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64.provenance.json" + size: 49275 + downloadCount: 11 + - name: "buildx-v0.30.1.linux-riscv64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64.sbom.json" + size: 295870 + downloadCount: 12 + - name: "buildx-v0.30.1.linux-s390x" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x" + size: 75366584 + downloadCount: 2359 + - name: "buildx-v0.30.1.linux-s390x.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x.provenance.json" + size: 49269 + downloadCount: 13 + - name: "buildx-v0.30.1.linux-s390x.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x.sbom.json" + size: 295868 + downloadCount: 13 + - name: "buildx-v0.30.1.netbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64" + size: 70938827 + downloadCount: 19 + - name: "buildx-v0.30.1.netbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64.provenance.json" + size: 49272 + downloadCount: 11 + - name: "buildx-v0.30.1.netbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64.sbom.json" + size: 294131 + downloadCount: 12 + - name: "buildx-v0.30.1.netbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64" + size: 66715851 + downloadCount: 15 + - name: "buildx-v0.30.1.netbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64.provenance.json" + size: 49271 + downloadCount: 14 + - name: "buildx-v0.30.1.netbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64.sbom.json" + size: 294131 + downloadCount: 12 + - name: "buildx-v0.30.1.openbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64" + size: 70983992 + downloadCount: 17 + - name: "buildx-v0.30.1.openbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64.provenance.json" + size: 49274 + downloadCount: 11 + - name: "buildx-v0.30.1.openbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64.sbom.json" + size: 294132 + downloadCount: 13 + - name: "buildx-v0.30.1.openbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64" + size: 66715960 + downloadCount: 15 + - name: "buildx-v0.30.1.openbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64.provenance.json" + size: 49275 + downloadCount: 12 + - name: "buildx-v0.30.1.openbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64.sbom.json" + size: 294132 + downloadCount: 14 + - name: "buildx-v0.30.1.windows-amd64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-amd64.exe" + size: 72954368 + downloadCount: 10120 + - name: "buildx-v0.30.1.windows-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-amd64.provenance.json" + size: 49283 + downloadCount: 34 + - name: "buildx-v0.30.1.windows-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-amd64.sbom.json" + size: 300651 + downloadCount: 37 + - name: "buildx-v0.30.1.windows-arm64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-arm64.exe" + size: 67651584 + downloadCount: 2234 + - name: "buildx-v0.30.1.windows-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-arm64.provenance.json" + size: 49283 + downloadCount: 14 + - name: "buildx-v0.30.1.windows-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-arm64.sbom.json" + size: 300651 + downloadCount: 17 + - name: "checksums.txt" + url: "https://github.com/docker/buildx/releases/download/v0.30.1/checksums.txt" + size: 4643 + downloadCount: 15598 +--- + + +Welcome to the v0.30.1 release of buildx! + + + +Please try out the release binaries and report any issues at +https://github.com/docker/buildx/issues. + +### Contributors + +* Tõnis Tiigi +* CrazyMax +* Jonathan A. Sternberg + +### Notable Changes + +- Fix concurrent map write panic. #3524 +- Fix possible excessive chunking when fetching blobs. #3529 + +### Dependency Changes + +* **github.com/containerd/containerd/v2** v2.2.0 -> efd86f2b0bc2 +* **github.com/moby/buildkit** v0.26.0 -> v0.26.1 + +Previous release can be found at [v0.30.0](https://github.com/docker/buildx/releases/tag/v0.30.0) + +## Downloads + +### Binaries + +| File | Artifacts | Size | +|------|-----------|------| +| [`buildx-v0.30.1.darwin-amd64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-amd64.sbom.json) | 69.9 MB | +| [`buildx-v0.30.1.darwin-arm64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.darwin-arm64.sbom.json) | 65.8 MB | +| [`buildx-v0.30.1.freebsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.1.freebsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.freebsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.1.linux-amd64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-amd64.sbom.json) | 67.8 MB | +| [`buildx-v0.30.1.linux-arm-v6`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v6.sbom.json) | 63.9 MB | +| [`buildx-v0.30.1.linux-arm-v7`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm-v7.sbom.json) | 63.9 MB | +| [`buildx-v0.30.1.linux-arm64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-arm64.sbom.json) | 63.8 MB | +| [`buildx-v0.30.1.linux-ppc64le`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-ppc64le.sbom.json) | 67.4 MB | +| [`buildx-v0.30.1.linux-riscv64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-riscv64.sbom.json) | 64.7 MB | +| [`buildx-v0.30.1.linux-s390x`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.linux-s390x.sbom.json) | 71.9 MB | +| [`buildx-v0.30.1.netbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.1.netbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.netbsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.1.openbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-amd64.sbom.json) | 67.7 MB | +| [`buildx-v0.30.1.openbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.openbsd-arm64.sbom.json) | 63.6 MB | +| [`buildx-v0.30.1.windows-amd64.exe`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-amd64.exe) | - | 69.6 MB | +| [`buildx-v0.30.1.windows-arm64.exe`](https://github.com/docker/buildx/releases/download/v0.30.1/buildx-v0.30.1.windows-arm64.exe) | - | 64.5 MB | + +### Checksums + +- [`checksums.txt`](https://github.com/docker/buildx/releases/download/v0.30.1/checksums.txt) (4.5 KB) + +To verify downloads, check the checksum file and compare with your downloaded file: + +```console +$ sha256sum -c checksums.txt +``` + +[View on GitHub](https://github.com/docker/buildx/releases/tag/v0.30.1) diff --git a/content/manuals/build/release-notes/0.31.0.md b/content/manuals/build/release-notes/0.31.0.md new file mode 100644 index 000000000000..c384288e7efd --- /dev/null +++ b/content/manuals/build/release-notes/0.31.0.md @@ -0,0 +1,482 @@ +--- +title: Buildx v0.31.0 +description: Release notes for Docker Buildx v0.31.0 +keywords: buildx, docker, build, release notes, v0.31.0 +date: 2026-01-22 +type: release-note +params: + github_url: https://github.com/docker/buildx/releases/tag/v0.31.0 + tag: v0.31.0 + prerelease: false + author: github-actions[bot] + assets: + - name: "buildx-v0.31.0.darwin-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64" + size: 92505424 + downloadCount: 436 + - name: "buildx-v0.31.0.darwin-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64.provenance.json" + size: 54587 + downloadCount: 22 + - name: "buildx-v0.31.0.darwin-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64.sbom.json" + size: 425703 + downloadCount: 6 + - name: "buildx-v0.31.0.darwin-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64" + size: 87076912 + downloadCount: 650 + - name: "buildx-v0.31.0.darwin-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64.provenance.json" + size: 54587 + downloadCount: 7 + - name: "buildx-v0.31.0.darwin-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64.sbom.json" + size: 425703 + downloadCount: 6 + - name: "buildx-v0.31.0.freebsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64" + size: 89653442 + downloadCount: 20 + - name: "buildx-v0.31.0.freebsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.provenance.json" + size: 54590 + downloadCount: 5 + - name: "buildx-v0.31.0.freebsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.sbom.json" + size: 427457 + downloadCount: 5 + - name: "buildx-v0.31.0.freebsd-amd64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.sigstore.json" + size: 83387 + downloadCount: 5 + - name: "buildx-v0.31.0.freebsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64" + size: 84279490 + downloadCount: 6 + - name: "buildx-v0.31.0.freebsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.provenance.json" + size: 54589 + downloadCount: 4 + - name: "buildx-v0.31.0.freebsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.sbom.json" + size: 427457 + downloadCount: 4 + - name: "buildx-v0.31.0.freebsd-arm64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.sigstore.json" + size: 83399 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64" + size: 89747640 + downloadCount: 109215 + - name: "buildx-v0.31.0.linux-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.provenance.json" + size: 54584 + downloadCount: 410 + - name: "buildx-v0.31.0.linux-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.sbom.json" + size: 429193 + downloadCount: 215 + - name: "buildx-v0.31.0.linux-amd64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.sigstore.json" + size: 83507 + downloadCount: 217 + - name: "buildx-v0.31.0.linux-arm-v6" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6" + size: 84738232 + downloadCount: 10919 + - name: "buildx-v0.31.0.linux-arm-v6.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.provenance.json" + size: 54587 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-arm-v6.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.sbom.json" + size: 429194 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-arm-v6.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.sigstore.json" + size: 83147 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-arm-v7" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7" + size: 84672696 + downloadCount: 41 + - name: "buildx-v0.31.0.linux-arm-v7.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.provenance.json" + size: 54587 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-arm-v7.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.sbom.json" + size: 429194 + downloadCount: 5 + - name: "buildx-v0.31.0.linux-arm-v7.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.sigstore.json" + size: 83507 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64" + size: 84410552 + downloadCount: 21944 + - name: "buildx-v0.31.0.linux-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.provenance.json" + size: 54584 + downloadCount: 201 + - name: "buildx-v0.31.0.linux-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.sbom.json" + size: 429193 + downloadCount: 10 + - name: "buildx-v0.31.0.linux-arm64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.sigstore.json" + size: 83323 + downloadCount: 7 + - name: "buildx-v0.31.0.linux-ppc64le" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le" + size: 89063608 + downloadCount: 242 + - name: "buildx-v0.31.0.linux-ppc64le.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.provenance.json" + size: 54589 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-ppc64le.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.sbom.json" + size: 429195 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-ppc64le.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.sigstore.json" + size: 83331 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-riscv64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64" + size: 85721272 + downloadCount: 8 + - name: "buildx-v0.31.0.linux-riscv64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.provenance.json" + size: 54590 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-riscv64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.sbom.json" + size: 429195 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-riscv64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.sigstore.json" + size: 83511 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-s390x" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x" + size: 94896312 + downloadCount: 242 + - name: "buildx-v0.31.0.linux-s390x.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.provenance.json" + size: 54584 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-s390x.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.sbom.json" + size: 429193 + downloadCount: 4 + - name: "buildx-v0.31.0.linux-s390x.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.sigstore.json" + size: 83379 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64" + size: 89620683 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.provenance.json" + size: 54587 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.sbom.json" + size: 427456 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-amd64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.sigstore.json" + size: 83387 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64" + size: 84279499 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.provenance.json" + size: 54587 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.sbom.json" + size: 427456 + downloadCount: 4 + - name: "buildx-v0.31.0.netbsd-arm64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.sigstore.json" + size: 83327 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-amd64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64" + size: 89661752 + downloadCount: 6 + - name: "buildx-v0.31.0.openbsd-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.provenance.json" + size: 54590 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.sbom.json" + size: 427457 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-amd64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.sigstore.json" + size: 83387 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-arm64" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64" + size: 84345144 + downloadCount: 5 + - name: "buildx-v0.31.0.openbsd-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.provenance.json" + size: 54590 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.sbom.json" + size: 427457 + downloadCount: 4 + - name: "buildx-v0.31.0.openbsd-arm64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.sigstore.json" + size: 83515 + downloadCount: 4 + - name: "buildx-v0.31.0.windows-amd64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-amd64.exe" + size: 91899392 + downloadCount: 1206 + - name: "buildx-v0.31.0.windows-amd64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-amd64.provenance.json" + size: 54598 + downloadCount: 14 + - name: "buildx-v0.31.0.windows-amd64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-amd64.sbom.json" + size: 432743 + downloadCount: 15 + - name: "buildx-v0.31.0.windows-amd64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-amd64.sigstore.json" + size: 83535 + downloadCount: 15 + - name: "buildx-v0.31.0.windows-arm64.exe" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-arm64.exe" + size: 85386752 + downloadCount: 252 + - name: "buildx-v0.31.0.windows-arm64.provenance.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-arm64.provenance.json" + size: 54598 + downloadCount: 4 + - name: "buildx-v0.31.0.windows-arm64.sbom.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-arm64.sbom.json" + size: 432743 + downloadCount: 4 + - name: "buildx-v0.31.0.windows-arm64.sigstore.json" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-arm64.sigstore.json" + size: 83463 + downloadCount: 4 + - name: "checksums.txt" + url: "https://github.com/docker/buildx/releases/download/v0.31.0/checksums.txt" + size: 6268 + downloadCount: 654 +--- + + +buildx 0.31.0 + +Welcome to the v0.31.0 release of buildx! + + + +Please try out the release binaries and report any issues at +https://github.com/docker/buildx/issues. + +### Contributors + +* Tõnis Tiigi +* CrazyMax +* Sebastiaan van Stijn +* Jonathan A. Sternberg +* Justin Chadwell +* Akihiro Suda +* Brian Goff +* David Karlsson +* Paweł Gronowski +* Sergei Khomenkov +* guimove + +### Notable Changes + +- This is a first version of Buildx with signed artifacts built using [Docker Github Builder](https://github.com/docker/github-builder-experimental) +- This release comes with new experimental support for source policy enforcement during builds using policies written in [Rego](https://www.openpolicyagent.org/docs/policy-language) language. There are some limitations in this release, for example, only builds from the local build context currently load policies. #3593 #3539 #3592 #3611 [docs](https://github.com/docker/docs/pull/23782) + - Matching policy for Dockerfile is loaded automatically if one exists, e.g., `Dockerfile.rego` or `app.Dockerfile.rego`. + - Additional policy configuration can be provided using new `build --policy` flag. + - Bake also supports automatic policy loading and a new `policy` key in the target configuration. + - New `buildx policy` command includes subcommands `eval` and `test` to help you write and test your policies. +- Bake command has a new `--var` flag to set variable values from the command line instead of setting environment variables. #3610 +- When creating images in Docker image store, they no longer unpack if export was initialized with `--push` or `-o type=registry` #3519 +- Add `semvercmp` helper function to Bake stdlib for easier version comparisons #3577 +- Retry transient TLS errors when talking to Kubernetes nodes #3493 +- Allow disabling Bake env lookups so `bake` can ignore host environment variables #3595 +- Add possibility to load Docker configs scoped to specific repos/scopes for finer credential control #3562 +- When building images from Docker Hardened Images (dhi.io) and Docker Scout registries, authentication will now automatically fall back to Docker Hub credentials if no specific credentials are found. #3612 +- Fix the `--debug` flag issues in standalone mode #3554 +- Fix handling `@` characters inside OCI layout paths passed to build #3583 +- Surface policy controls `--policy`, policy eval, custom builtins/Regos/gitsign checks so builds can enforce policies #3593 #3549 +- Prevent DAP breakpoint overlaps from triggering false positives #3534 +- Fix mount input names in DAP run mounts #3579 +- Fix DAP breakpoint reason reporting #3581 + + +### Dependency Changes + +* **github.com/ProtonMail/go-crypto** v1.3.0 **_new_** +* **github.com/agnivade/levenshtein** v1.2.1 **_new_** +* **github.com/asaskevich/govalidator** a9d515a09cc2 **_new_** +* **github.com/aws/aws-sdk-go-v2** v1.38.1 -> v1.39.6 +* **github.com/aws/aws-sdk-go-v2/config** v1.31.3 -> v1.31.20 +* **github.com/aws/aws-sdk-go-v2/credentials** v1.18.7 -> v1.18.24 +* **github.com/aws/aws-sdk-go-v2/feature/ec2/imds** v1.18.4 -> v1.18.13 +* **github.com/aws/aws-sdk-go-v2/internal/configsources** v1.4.4 -> v1.4.13 +* **github.com/aws/aws-sdk-go-v2/internal/endpoints/v2** v2.7.4 -> v2.7.13 +* **github.com/aws/aws-sdk-go-v2/internal/ini** v1.8.3 -> v1.8.4 +* **github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding** v1.13.0 -> v1.13.3 +* **github.com/aws/aws-sdk-go-v2/service/internal/presigned-url** v1.13.4 -> v1.13.13 +* **github.com/aws/aws-sdk-go-v2/service/sso** v1.28.2 -> v1.30.3 +* **github.com/aws/aws-sdk-go-v2/service/ssooidc** v1.34.0 -> v1.35.7 +* **github.com/aws/aws-sdk-go-v2/service/sts** v1.38.0 -> v1.40.2 +* **github.com/aws/smithy-go** v1.22.5 -> v1.23.2 +* **github.com/beorn7/perks** v1.0.1 **_new_** +* **github.com/blang/semver** v3.5.1 **_new_** +* **github.com/cespare/xxhash/v2** v2.3.0 **_new_** +* **github.com/cloudflare/circl** v1.6.1 **_new_** +* **github.com/containerd/containerd/v2** efd86f2b0bc2 -> v2.2.1 +* **github.com/cyberphone/json-canonicalization** 19d51d7fe467 **_new_** +* **github.com/davecgh/go-spew** v1.1.1 -> d8f796af33cc +* **github.com/decred/dcrd/dcrec/secp256k1/v4** v4.4.0 **_new_** +* **github.com/digitorus/pkcs7** 3a137a874352 **_new_** +* **github.com/digitorus/timestamp** 220c5c2851b7 **_new_** +* **github.com/docker/cli** v28.5.1 -> v29.1.5 +* **github.com/docker/cli-docs-tool** v0.10.0 -> v0.11.0 +* **github.com/docker/docker** v28.5.1 -> v28.5.2 +* **github.com/docker/docker-credential-helpers** v0.9.3 -> v0.9.5 +* **github.com/docker/go-connections** v0.5.0 -> v0.6.0 +* **github.com/fvbommel/sortorder** v1.0.1 -> v1.1.0 +* **github.com/go-ini/ini** v1.67.0 **_new_** +* **github.com/go-openapi/analysis** v0.24.1 **_new_** +* **github.com/go-openapi/errors** v0.22.4 **_new_** +* **github.com/go-openapi/jsonpointer** v0.21.0 -> v0.22.1 +* **github.com/go-openapi/jsonreference** v0.20.2 -> v0.21.3 +* **github.com/go-openapi/loads** v0.23.2 **_new_** +* **github.com/go-openapi/runtime** v0.29.2 **_new_** +* **github.com/go-openapi/spec** v0.22.1 **_new_** +* **github.com/go-openapi/strfmt** v0.25.0 **_new_** +* **github.com/go-openapi/swag** v0.23.0 -> v0.25.3 +* **github.com/go-openapi/swag/cmdutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/conv** v0.25.3 **_new_** +* **github.com/go-openapi/swag/fileutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/jsonname** v0.25.3 **_new_** +* **github.com/go-openapi/swag/jsonutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/loading** v0.25.3 **_new_** +* **github.com/go-openapi/swag/mangling** v0.25.3 **_new_** +* **github.com/go-openapi/swag/netutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/stringutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/typeutils** v0.25.3 **_new_** +* **github.com/go-openapi/swag/yamlutils** v0.25.3 **_new_** +* **github.com/go-openapi/validate** v0.25.1 **_new_** +* **github.com/gobwas/glob** v0.2.3 **_new_** +* **github.com/goccy/go-json** v0.10.5 **_new_** +* **github.com/google/certificate-transparency-go** v1.3.2 **_new_** +* **github.com/google/go-containerregistry** v0.20.6 **_new_** +* **github.com/google/go-dap** v0.12.0 -> d7a2259b058b +* **github.com/grpc-ecosystem/grpc-gateway/v2** v2.27.2 -> v2.27.3 +* **github.com/hiddeco/sshsig** v0.2.0 **_new_** +* **github.com/in-toto/attestation** v1.1.2 **_new_** +* **github.com/klauspost/compress** v1.18.1 -> v1.18.2 +* **github.com/lestrrat-go/blackmagic** v1.0.4 **_new_** +* **github.com/lestrrat-go/dsig** v1.0.0 **_new_** +* **github.com/lestrrat-go/dsig-secp256k1** v1.0.0 **_new_** +* **github.com/lestrrat-go/httpcc** v1.0.1 **_new_** +* **github.com/lestrrat-go/httprc/v3** v3.0.1 **_new_** +* **github.com/lestrrat-go/jwx/v3** v3.0.11 **_new_** +* **github.com/lestrrat-go/option** v1.0.1 **_new_** +* **github.com/lestrrat-go/option/v2** v2.0.0 **_new_** +* **github.com/moby/buildkit** v0.26.1 -> v0.27.0 +* **github.com/moby/go-archive** v0.1.0 -> v0.2.0 +* **github.com/moby/moby/api** v1.52.0 **_new_** +* **github.com/moby/moby/client** v0.2.1 **_new_** +* **github.com/moby/policy-helpers** 9fcc1a9ec5c9 **_new_** +* **github.com/morikuni/aec** v1.0.0 -> v1.1.0 +* **github.com/oklog/ulid** v1.3.1 **_new_** +* **github.com/open-policy-agent/opa** v1.10.1 **_new_** +* **github.com/pmezard/go-difflib** v1.0.0 -> 5d4384ee4fb2 +* **github.com/prometheus/client_golang** v1.23.2 **_new_** +* **github.com/prometheus/client_model** v0.6.2 **_new_** +* **github.com/prometheus/common** v0.66.1 **_new_** +* **github.com/prometheus/procfs** v0.17.0 **_new_** +* **github.com/rcrowley/go-metrics** 65e299d6c5c9 **_new_** +* **github.com/rivo/uniseg** v0.2.0 -> v0.4.7 +* **github.com/segmentio/asm** v1.2.0 **_new_** +* **github.com/sigstore/protobuf-specs** v0.5.0 **_new_** +* **github.com/sigstore/rekor** v1.4.3 **_new_** +* **github.com/sigstore/rekor-tiles/v2** v2.0.1 **_new_** +* **github.com/sigstore/sigstore** v1.10.0 **_new_** +* **github.com/sigstore/sigstore-go** b5fe07a5a7d7 **_new_** +* **github.com/sigstore/timestamp-authority/v2** v2.0.2 **_new_** +* **github.com/sirupsen/logrus** v1.9.3 -> v1.9.4 +* **github.com/spf13/cobra** v1.10.1 -> v1.10.2 +* **github.com/tchap/go-patricia/v2** v2.3.3 **_new_** +* **github.com/theupdateframework/go-tuf/v2** v2.3.0 **_new_** +* **github.com/tonistiigi/fsutil** 586307ad452f -> a2aa163d723f +* **github.com/transparency-dev/formats** 404c0d5b696c **_new_** +* **github.com/transparency-dev/merkle** v0.0.2 **_new_** +* **github.com/valyala/fastjson** v1.6.4 **_new_** +* **github.com/vektah/gqlparser/v2** v2.5.30 **_new_** +* **github.com/xeipuuv/gojsonpointer** 02993c407bfb **_new_** +* **github.com/xeipuuv/gojsonreference** bd5ef7bd5415 **_new_** +* **github.com/yashtewari/glob-intersection** v0.2.0 **_new_** +* **go.mongodb.org/mongo-driver** v1.17.6 **_new_** +* **go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc** v0.61.0 -> v0.63.0 +* **go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace** v0.61.0 -> v0.63.0 +* **go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp** v0.61.0 -> v0.63.0 +* **go.opentelemetry.io/otel/exporters/stdout/stdouttrace** v1.31.0 -> v1.38.0 +* **go.yaml.in/yaml/v2** v2.4.2 -> v2.4.3 +* **google.golang.org/genproto/googleapis/api** c5933d9347a5 -> f26f9409b101 +* **google.golang.org/genproto/googleapis/rpc** c5933d9347a5 -> f26f9409b101 + +Previous release can be found at [v0.30.1](https://github.com/docker/buildx/releases/tag/v0.30.1) + +## Downloads + +### Binaries + +| File | Artifacts | Size | +|------|-----------|------| +| [`buildx-v0.31.0.darwin-amd64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-amd64.sbom.json) | 88.2 MB | +| [`buildx-v0.31.0.darwin-arm64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.darwin-arm64.sbom.json) | 83.0 MB | +| [`buildx-v0.31.0.freebsd-amd64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-amd64.sigstore.json) | 85.5 MB | +| [`buildx-v0.31.0.freebsd-arm64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.freebsd-arm64.sigstore.json) | 80.4 MB | +| [`buildx-v0.31.0.linux-amd64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-amd64.sigstore.json) | 85.6 MB | +| [`buildx-v0.31.0.linux-arm-v6`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v6.sigstore.json) | 80.8 MB | +| [`buildx-v0.31.0.linux-arm-v7`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm-v7.sigstore.json) | 80.8 MB | +| [`buildx-v0.31.0.linux-arm64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-arm64.sigstore.json) | 80.5 MB | +| [`buildx-v0.31.0.linux-ppc64le`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-ppc64le.sigstore.json) | 84.9 MB | +| [`buildx-v0.31.0.linux-riscv64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-riscv64.sigstore.json) | 81.8 MB | +| [`buildx-v0.31.0.linux-s390x`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.linux-s390x.sigstore.json) | 90.5 MB | +| [`buildx-v0.31.0.netbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-amd64.sigstore.json) | 85.5 MB | +| [`buildx-v0.31.0.netbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.netbsd-arm64.sigstore.json) | 80.4 MB | +| [`buildx-v0.31.0.openbsd-amd64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-amd64.sigstore.json) | 85.5 MB | +| [`buildx-v0.31.0.openbsd-arm64`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64) | [`provenance.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.provenance.json) [`sbom.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.sbom.json) [`sigstore.json`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.openbsd-arm64.sigstore.json) | 80.4 MB | +| [`buildx-v0.31.0.windows-amd64.exe`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-amd64.exe) | - | 87.6 MB | +| [`buildx-v0.31.0.windows-arm64.exe`](https://github.com/docker/buildx/releases/download/v0.31.0/buildx-v0.31.0.windows-arm64.exe) | - | 81.4 MB | + +### Checksums + +- [`checksums.txt`](https://github.com/docker/buildx/releases/download/v0.31.0/checksums.txt) (6.1 KB) + +To verify downloads, check the checksum file and compare with your downloaded file: + +```console +$ sha256sum -c checksums.txt +``` + +[View on GitHub](https://github.com/docker/buildx/releases/tag/v0.31.0) diff --git a/content/manuals/build/release-notes/_index.md b/content/manuals/build/release-notes/_index.md new file mode 100644 index 000000000000..6794927ecd90 --- /dev/null +++ b/content/manuals/build/release-notes/_index.md @@ -0,0 +1,14 @@ +--- +title: Buildx release notes +linkTitle: Release notes +description: Release notes for Buildx +keywords: buildx, docker, build, release notes +weight: 120 +type: release-note +--- + +Release notes for Buildx. Each release includes new features, bug fixes, +and improvements. + +For the latest releases and downloads, visit the +[GitHub releases page](https://github.com/docker/buildx/releases). diff --git a/hack/release-notes/README.md b/hack/release-notes/README.md new file mode 100644 index 000000000000..5cac84c5a036 --- /dev/null +++ b/hack/release-notes/README.md @@ -0,0 +1,167 @@ +# Release Notes Generator + +Automatically fetch and generate release notes from GitHub repositories. + +## Overview + +This tool fetches releases from configured GitHub repositories using the `gh` +CLI and generates Hugo-compatible markdown files using Go templates. + +## Requirements + +- [gh CLI](https://cli.github.com/) - Must be installed and authenticated +- Go 1.23 or later (for building/running) + +## Installation + +The tool doesn't need to be installed. Run it directly: + +```console +$ cd hack/release-notes +$ go run . [version] +``` + +Or build it: + +```console +$ cd hack/release-notes +$ go build -o release-notes +$ ./release-notes [version] +``` + +## Usage + +Fetch all releases for a repository: + +```console +$ go run . buildx +``` + +Fetch a specific version: + +```console +$ go run . buildx v0.18.0 +``` + +Clean and refetch all releases: + +```console +$ go run . --clean buildx +``` + +Fetch all configured repositories: + +```console +$ for repo in buildx compose buildkit; do go run . $repo; done +``` + +## Configuration + +Edit `config.json` to add or modify repositories. Each entry includes: + +- `owner` - GitHub repository owner +- `repo` - GitHub repository name +- `content_path` - Where to generate files (relative to project root) +- `title_prefix` - Product name for titles +- `description_template` - SEO description (use `{{version}}` placeholder) +- `keywords_base` - Base keywords for SEO +- `fetch_limit` - Maximum releases to fetch (default: 20) +- `include_prereleases` - Include pre-releases (default: true) + +## Template + +The markdown template is in `templates/release-note.md.tmpl`. It uses Go's +`text/template` syntax (same as Hugo). + +Edit the template to customize the generated markdown structure, headings, or +formatting. + +## Generated Files + +The tool generates: + +- Individual release notes: `{version}.md` in the configured content path +- Section index: `_index.md` (if it doesn't exist) + +Each release note includes: + +- Hugo front matter with metadata +- Pre-release badge (if applicable) +- Release body from GitHub +- Downloads section with binaries table +- Checksums section +- Link to view on GitHub + +## Automation + +### GitHub Actions + +Create a workflow to automatically fetch new releases: + +```yaml +name: Update Release Notes + +on: + schedule: + - cron: '0 12 * * *' # Daily at noon + workflow_dispatch: # Manual trigger + +jobs: + update-release-notes: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version: '1.23' + + - name: Fetch release notes + run: | + cd hack/release-notes + for repo in buildx compose buildkit; do + go run . $repo + done + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5 + with: + title: "Update release notes" + body: "Automated update of release notes from GitHub releases" + branch: release-notes-update + commit-message: "docs: update release notes" +``` + +## Development + +Project structure: + +``` +hack/release-notes/ +├── main.go # Main program logic +├── config.json # Repository configuration +├── templates/ +│ └── release-note.md.tmpl # Markdown template +├── go.mod # Go module definition +└── README.md # This file +``` + +The program: + +1. Reads `config.json` to get repository configurations +2. Uses `gh` CLI to fetch release data as JSON +3. Parses the JSON into Go structs +4. Processes assets into categories (binaries, checksums, metadata) +5. Executes the markdown template with the data +6. Writes the generated markdown to the content directory + +## Updating Existing Content + +The tool skips files that already exist unless you use `--clean`. To update a +single release: + +```console +$ go run . buildx v0.18.0 +``` + +This overwrites the existing file with fresh content from GitHub. diff --git a/hack/release-notes/config.json b/hack/release-notes/config.json new file mode 100644 index 000000000000..f032c31652fd --- /dev/null +++ b/hack/release-notes/config.json @@ -0,0 +1,34 @@ +{ + "repos": [ + { + "owner": "docker", + "repo": "buildx", + "content_path": "content/manuals/build/release-notes", + "title_prefix": "Buildx", + "description_template": "Release notes for Docker Buildx {{version}}", + "keywords_base": "buildx, docker, build, release notes", + "fetch_limit": 30, + "include_prereleases": true + }, + { + "owner": "docker", + "repo": "compose", + "content_path": "content/manuals/compose/release-notes", + "title_prefix": "Compose", + "description_template": "Release notes for Docker Compose {{version}}", + "keywords_base": "compose, docker, release notes", + "fetch_limit": 30, + "include_prereleases": true + }, + { + "owner": "moby", + "repo": "buildkit", + "content_path": "content/manuals/build/buildkit/release-notes", + "title_prefix": "BuildKit", + "description_template": "Release notes for BuildKit {{version}}", + "keywords_base": "buildkit, docker, dockerfile, release notes", + "fetch_limit": 30, + "include_prereleases": true + } + ] +} diff --git a/hack/release-notes/go.mod b/hack/release-notes/go.mod new file mode 100644 index 000000000000..c3fb41b22fe2 --- /dev/null +++ b/hack/release-notes/go.mod @@ -0,0 +1,3 @@ +module github.com/docker/docs/hack/release-notes + +go 1.23 diff --git a/hack/release-notes/main.go b/hack/release-notes/main.go new file mode 100644 index 000000000000..6b6a0b61c2af --- /dev/null +++ b/hack/release-notes/main.go @@ -0,0 +1,490 @@ +package main + +import ( + "bytes" + "encoding/json" + "flag" + "fmt" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "text/template" + "time" +) + +// Config represents the configuration file structure +type Config struct { + Repos []RepoConfig `json:"repos"` +} + +type RepoConfig struct { + Owner string `json:"owner"` + Repo string `json:"repo"` + ContentPath string `json:"content_path"` + TitlePrefix string `json:"title_prefix"` + DescriptionTemplate string `json:"description_template"` + KeywordsBase string `json:"keywords_base"` + FetchLimit int `json:"fetch_limit"` + IncludePrereleases bool `json:"include_prereleases"` +} + +// GitHubRelease represents the release data from GitHub API +type GitHubRelease struct { + TagName string `json:"tagName"` + Name string `json:"name"` + Body string `json:"body"` + PublishedAt time.Time `json:"publishedAt"` + IsPrerelease bool `json:"isPrerelease"` + URL string `json:"url"` + Author GitHubAuthor `json:"author"` + Assets []GitHubAsset `json:"assets"` +} + +type GitHubAuthor struct { + Login string `json:"login"` +} + +type GitHubAsset struct { + Name string `json:"name"` + URL string `json:"url"` + Size int64 `json:"size"` + DownloadCount int `json:"downloadCount"` +} + +// TemplateData represents the data passed to the markdown template +type TemplateData struct { + TitlePrefix string + Tag string + Description string + Keywords string + Date string + URL string + IsPrerelease bool + Author string + Body string + Assets []Asset + Binaries []Binary + Checksums []Checksum +} + +type Asset struct { + Name string + URL string + Size int64 + DownloadCount int +} + +type Binary struct { + Name string + URL string + Artifacts string + SizeMB string +} + +type Checksum struct { + Name string + URL string + SizeKB string +} + +var ( + cleanMode bool + projectRoot string + execDir string +) + +func init() { + flag.BoolVar(&cleanMode, "clean", false, "Remove existing release notes before fetching") + flag.Usage = func() { + fmt.Fprintf(os.Stderr, "Usage: %s [OPTIONS] [version]\n\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Fetch release notes from GitHub repositories and generate Hugo markdown files.\n\n") + fmt.Fprintf(os.Stderr, "Arguments:\n") + fmt.Fprintf(os.Stderr, " repo Repository name (e.g., 'buildx', 'compose')\n") + fmt.Fprintf(os.Stderr, " version Optional specific version to fetch (e.g., 'v0.18.0')\n\n") + fmt.Fprintf(os.Stderr, "Options:\n") + flag.PrintDefaults() + fmt.Fprintf(os.Stderr, "\nExamples:\n") + fmt.Fprintf(os.Stderr, " %s buildx # Fetch all buildx releases\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s buildx v0.18.0 # Fetch specific version\n", os.Args[0]) + fmt.Fprintf(os.Stderr, " %s --clean buildx # Clean and refetch all\n", os.Args[0]) + } +} + +func main() { + flag.Parse() + + // Determine executable directory and project root + execPath, err := os.Executable() + if err != nil { + // Fall back to current directory logic + cwd, err := os.Getwd() + if err != nil { + fatal("Failed to get current directory: %v", err) + } + execDir = cwd + projectRoot = filepath.Join(cwd, "../..") + } else { + execDir = filepath.Dir(execPath) + projectRoot = filepath.Join(execDir, "../..") + } + projectRoot, _ = filepath.Abs(projectRoot) + execDir, _ = filepath.Abs(execDir) + + args := flag.Args() + if len(args) < 1 { + flag.Usage() + os.Exit(1) + } + + repoFilter := args[0] + versionFilter := "" + if len(args) > 1 { + versionFilter = args[1] + } + + // Check if gh CLI is available + if _, err := exec.LookPath("gh"); err != nil { + fatal("gh CLI is required but not installed. Install from: https://cli.github.com/") + } + + // Read config + config, err := readConfig() + if err != nil { + fatal("Failed to read config: %v", err) + } + + fmt.Println("\033[34mStarting release notes fetch...\033[0m") + fmt.Println() + + // Process each repository + for _, repo := range config.Repos { + if repoFilter != "" && repo.Repo != repoFilter { + continue + } + + if err := processRepo(repo, versionFilter); err != nil { + fmt.Fprintf(os.Stderr, "\033[33m Warning: %v\033[0m\n", err) + } + fmt.Println() + } + + fmt.Println("\033[32m✅ Release notes fetch complete\033[0m") +} + +func readConfig() (*Config, error) { + configPath := filepath.Join(execDir, "config.json") + data, err := os.ReadFile(configPath) + if err != nil { + return nil, fmt.Errorf("reading config file: %w", err) + } + + var config Config + if err := json.Unmarshal(data, &config); err != nil { + return nil, fmt.Errorf("parsing config: %w", err) + } + + return &config, nil +} + +func processRepo(repo RepoConfig, versionFilter string) error { + fmt.Printf("\033[34mFetching releases for %s/%s...\033[0m\n", repo.Owner, repo.Repo) + + outputDir := filepath.Join(projectRoot, repo.ContentPath) + if err := os.MkdirAll(outputDir, 0755); err != nil { + return fmt.Errorf("creating output directory: %w", err) + } + + // Clean existing files if requested + if cleanMode { + fmt.Println("\033[33m Cleaning existing release notes...\033[0m") + entries, err := os.ReadDir(outputDir) + if err != nil { + return fmt.Errorf("reading output directory: %w", err) + } + for _, entry := range entries { + if !entry.IsDir() && entry.Name() != "_index.md" && strings.HasSuffix(entry.Name(), ".md") { + filePath := filepath.Join(outputDir, entry.Name()) + if err := os.Remove(filePath); err != nil { + fmt.Fprintf(os.Stderr, "\033[33m Warning: failed to remove %s: %v\033[0m\n", entry.Name(), err) + } + } + } + } + + count := 0 + + // Fetch specific version or all releases + if versionFilter != "" { + if err := fetchAndGenerateRelease(repo, versionFilter, outputDir); err != nil { + return fmt.Errorf("fetching version %s: %w", versionFilter, err) + } + count++ + } else { + releases, err := listReleases(repo) + if err != nil { + return fmt.Errorf("listing releases: %w", err) + } + + for _, tag := range releases { + sanitized := sanitizeVersion(tag) + outputFile := filepath.Join(outputDir, sanitized+".md") + + // Skip if file exists and not in clean mode + if !cleanMode { + if _, err := os.Stat(outputFile); err == nil { + continue + } + } + + if err := fetchAndGenerateRelease(repo, tag, outputDir); err != nil { + fmt.Fprintf(os.Stderr, "\033[33m Skipping %s: %v\033[0m\n", tag, err) + continue + } + count++ + } + } + + // Create or update _index.md + indexFile := filepath.Join(outputDir, "_index.md") + if _, err := os.Stat(indexFile); os.IsNotExist(err) { + if err := createIndexFile(repo, indexFile); err != nil { + return fmt.Errorf("creating index file: %w", err) + } + fmt.Println("\033[32m ✓ Created _index.md\033[0m") + } + + fmt.Printf("\033[32mFetched %d releases for %s/%s\033[0m\n", count, repo.Owner, repo.Repo) + return nil +} + +func listReleases(repo RepoConfig) ([]string, error) { + cmd := exec.Command("gh", "release", "list", + "--repo", fmt.Sprintf("%s/%s", repo.Owner, repo.Repo), + "--limit", fmt.Sprintf("%d", repo.FetchLimit), + "--json", "tagName,isPrerelease") + + output, err := cmd.Output() + if err != nil { + return nil, fmt.Errorf("gh release list failed: %w", err) + } + + // Parse JSON output + type ReleaseListItem struct { + TagName string `json:"tagName"` + IsPrerelease bool `json:"isPrerelease"` + } + + var releases []ReleaseListItem + if err := json.Unmarshal(output, &releases); err != nil { + return nil, fmt.Errorf("parsing release list: %w", err) + } + + var tags []string + for _, release := range releases { + // Filter out prereleases if not wanted + if !repo.IncludePrereleases && release.IsPrerelease { + continue + } + tags = append(tags, release.TagName) + } + + return tags, nil +} + +func fetchAndGenerateRelease(repo RepoConfig, tag string, outputDir string) error { + release, err := fetchRelease(repo, tag) + if err != nil { + return err + } + + data := buildTemplateData(repo, release) + + sanitized := sanitizeVersion(tag) + outputFile := filepath.Join(outputDir, sanitized+".md") + + if err := generateMarkdown(data, outputFile); err != nil { + return fmt.Errorf("generating markdown: %w", err) + } + + fmt.Printf("\033[32m ✓ Generated %s.md\033[0m\n", sanitized) + return nil +} + +func fetchRelease(repo RepoConfig, tag string) (*GitHubRelease, error) { + cmd := exec.Command("gh", "release", "view", tag, + "--repo", fmt.Sprintf("%s/%s", repo.Owner, repo.Repo), + "--json", "tagName,name,body,publishedAt,isPrerelease,url,author,assets") + + output, err := cmd.Output() + if err != nil { + return nil, fmt.Errorf("gh release view failed: %w", err) + } + + var release GitHubRelease + if err := json.Unmarshal(output, &release); err != nil { + return nil, fmt.Errorf("parsing release JSON: %w", err) + } + + return &release, nil +} + +func buildTemplateData(repo RepoConfig, release *GitHubRelease) *TemplateData { + description := strings.ReplaceAll(repo.DescriptionTemplate, "{{version}}", release.TagName) + keywords := fmt.Sprintf("%s, %s", repo.KeywordsBase, release.TagName) + author := release.Author.Login + if author == "" { + author = "unknown" + } + + data := &TemplateData{ + TitlePrefix: repo.TitlePrefix, + Tag: release.TagName, + Description: description, + Keywords: keywords, + Date: release.PublishedAt.Format("2006-01-02"), + URL: release.URL, + IsPrerelease: release.IsPrerelease, + Author: author, + Body: strings.TrimSpace(release.Body), + Assets: make([]Asset, 0), + Binaries: make([]Binary, 0), + Checksums: make([]Checksum, 0), + } + + // Process assets in two passes: + // Pass 1: Categorize all assets into binaries, checksums, and metadata files. + // Metadata files (SBOM, provenance, sigstore) are stored in a map keyed by + // the binary filename they relate to (e.g., "buildx-v0.31.0.linux-amd64"). + // Pass 2: Associate metadata files with their corresponding binaries by looking up + // each binary name in the metadata map and building artifact links. + binaries := make([]Binary, 0) + metadata := make(map[string][]GitHubAsset) // keyed by binary name + + for _, asset := range release.Assets { + data.Assets = append(data.Assets, Asset{ + Name: asset.Name, + URL: asset.URL, + Size: asset.Size, + DownloadCount: asset.DownloadCount, + }) + + // Categorize assets + if isChecksum(asset.Name) { + data.Checksums = append(data.Checksums, Checksum{ + Name: asset.Name, + URL: asset.URL, + SizeKB: fmt.Sprintf("%.1f", float64(asset.Size)/1024.0), + }) + } else if isMetadata(asset.Name) || isSigstore(asset.Name) { + // Extract base binary name (remove .sbom.json, .provenance.json, .sigstore.json) + baseName := strings.TrimSuffix(asset.Name, ".sbom.json") + baseName = strings.TrimSuffix(baseName, ".provenance.json") + baseName = strings.TrimSuffix(baseName, ".sigstore.json") + metadata[baseName] = append(metadata[baseName], asset) + } else { + binaries = append(binaries, Binary{ + Name: asset.Name, + URL: asset.URL, + SizeMB: fmt.Sprintf("%.1f", float64(asset.Size)/1048576.0), + }) + } + } + + // Second pass: add artifacts links to binaries + for i := range binaries { + artifacts := make([]string, 0) + if relatedMeta, ok := metadata[binaries[i].Name]; ok { + for _, meta := range relatedMeta { + var link string + if strings.Contains(meta.Name, ".sbom.") { + link = fmt.Sprintf("[`sbom.json`](%s)", meta.URL) + } else if strings.Contains(meta.Name, ".provenance.") { + link = fmt.Sprintf("[`provenance.json`](%s)", meta.URL) + } else if strings.Contains(meta.Name, ".sigstore.") { + link = fmt.Sprintf("[`sigstore.json`](%s)", meta.URL) + } + if link != "" { + artifacts = append(artifacts, link) + } + } + } + if len(artifacts) > 0 { + binaries[i].Artifacts = strings.Join(artifacts, " ") + } else { + binaries[i].Artifacts = "-" + } + } + + data.Binaries = binaries + return data +} + +func generateMarkdown(data *TemplateData, outputFile string) error { + tmplPath := filepath.Join(execDir, "templates", "release-note.md.tmpl") + tmpl, err := template.ParseFiles(tmplPath) + if err != nil { + return fmt.Errorf("parsing template: %w", err) + } + + var buf bytes.Buffer + if err := tmpl.Execute(&buf, data); err != nil { + return fmt.Errorf("executing template: %w", err) + } + + if err := os.WriteFile(outputFile, buf.Bytes(), 0644); err != nil { + return fmt.Errorf("writing output file: %w", err) + } + + return nil +} + +func createIndexFile(repo RepoConfig, indexFile string) error { + content := fmt.Sprintf(`--- +title: %s release notes +linkTitle: Release notes +description: Release notes for %s +keywords: %s +weight: 120 +type: release-note +--- + +Release notes for %s. Each release includes new features, bug fixes, +and improvements. + +For the latest releases and downloads, visit the +[GitHub releases page](https://github.com/%s/%s/releases). +`, repo.TitlePrefix, repo.TitlePrefix, repo.KeywordsBase, + repo.TitlePrefix, repo.Owner, repo.Repo) + + return os.WriteFile(indexFile, []byte(content), 0644) +} + +func sanitizeVersion(version string) string { + // Remove leading 'v' and replace problematic characters + s := strings.TrimPrefix(version, "v") + s = strings.ReplaceAll(s, "/", "-") + return s +} + +func isChecksum(name string) bool { + checksumPattern := regexp.MustCompile(`(?i)(checksum|sha256|sha512|md5).*\.(txt|sum)$`) + checksumNames := regexp.MustCompile(`(?i)^(SHA256SUMS|CHECKSUMS|checksums\.txt)$`) + return checksumPattern.MatchString(name) || checksumNames.MatchString(name) +} + +func isMetadata(name string) bool { + metadataPattern := regexp.MustCompile(`(?i)\.(sbom|provenance|attestation)\.(json|jsonl)$`) + return metadataPattern.MatchString(name) +} + +func isSigstore(name string) bool { + sigstorePattern := regexp.MustCompile(`(?i)\.sigstore\.json$`) + return sigstorePattern.MatchString(name) +} + +func fatal(format string, args ...interface{}) { + fmt.Fprintf(os.Stderr, "\033[31mError: "+format+"\033[0m\n", args...) + os.Exit(1) +} diff --git a/hack/release-notes/release-notes b/hack/release-notes/release-notes new file mode 100755 index 000000000000..91f4349ad8e2 Binary files /dev/null and b/hack/release-notes/release-notes differ diff --git a/hack/release-notes/templates/release-note.md.tmpl b/hack/release-notes/templates/release-note.md.tmpl new file mode 100644 index 000000000000..13dedde62e4d --- /dev/null +++ b/hack/release-notes/templates/release-note.md.tmpl @@ -0,0 +1,55 @@ +--- +title: {{.TitlePrefix}} {{.Tag}} +description: {{.Description}} +keywords: {{.Keywords}} +date: {{.Date}} +type: release-note +params: + github_url: {{.URL}} + tag: {{.Tag}} + prerelease: {{.IsPrerelease}} + author: {{.Author}} +{{- if .Assets}} + assets: +{{- range .Assets}} + - name: "{{.Name}}" + url: "{{.URL}}" + size: {{.Size}} + downloadCount: {{.DownloadCount}} +{{- end}} +{{- end}} +--- +{{if .IsPrerelease}} +{{print "{{< badge color=amber text=\"Pre-release\" >}}"}} +{{end}} + +{{.Body}} +{{- if or .Binaries .Checksums}} + +## Downloads +{{- end}} +{{- if .Binaries}} + +### Binaries + +| File | Artifacts | Size | +|------|-----------|------| +{{- range .Binaries}} +| [`{{.Name}}`]({{.URL}}) | {{.Artifacts}} | {{.SizeMB}} MB | +{{- end}} +{{- end}} +{{- if .Checksums}} + +### Checksums +{{range .Checksums}} +- [`{{.Name}}`]({{.URL}}) ({{.SizeKB}} KB) +{{- end}} + +To verify downloads, check the checksum file and compare with your downloaded file: + +```console +$ sha256sum -c checksums.txt +``` +{{- end}} + +[View on GitHub]({{.URL}}) diff --git a/layouts/release-note/list.html b/layouts/release-note/list.html new file mode 100644 index 000000000000..237960b3856d --- /dev/null +++ b/layouts/release-note/list.html @@ -0,0 +1,65 @@ +{{ define "main" }} +
+
+ {{ partial "breadcrumbs.html" . }} + +
+

{{ .Title | safeHTML }}

+ +
+ +
+ {{ partialCached "pagemeta.html" . . }} +
+
+ + {{ .Content }} + + {{/* List all release notes in this section */}} + {{ $pages := where .RegularPages "Type" "release-note" }} + {{ if $pages }} +
+

All releases

+ + {{ range $pages }} +
+
+
+ + {{ .Title }} + + + {{ with .Params.date }} + + {{ dateFormat "Jan 2, 2006" . }} + + {{ end }} + + {{ if eq .Params.params.prerelease true }} + + Pre-release + + {{ end }} +
+ + {{ with .Params.params.github_url }} + + + + + + {{ end }} +
+
+ {{ end }} +
+ {{ end }} +
+ + +
+{{ end }} diff --git a/layouts/release-note/single.html b/layouts/release-note/single.html new file mode 100644 index 000000000000..aba63dfdc67c --- /dev/null +++ b/layouts/release-note/single.html @@ -0,0 +1,103 @@ +{{ define "main" }} +
+
+ {{ partial "breadcrumbs.html" . }} + +
+
+

{{ .Title | safeHTML }}

+ +
+ {{ with .Params.date }} + + + + + {{ dateFormat "January 2, 2006" . }} + + {{ end }} + + {{ with .Params.params.tag }} + + + + + {{ . }} + + {{ end }} + + {{ with .Params.params.github_url }} + + + + + View on GitHub + + {{ end }} +
+
+ + +
+ +
+ {{ partialCached "pagemeta.html" . . }} +
+
+ + {{ .Content }} + + {{/* Navigation to other releases */}} + {{ $currentSection := .CurrentSection }} + {{ $pages := where $currentSection.RegularPages "Type" "release-note" }} + {{ $currentIndex := 0 }} + {{ range $index, $page := $pages }} + {{ if eq $page.Permalink $.Permalink }} + {{ $currentIndex = $index }} + {{ end }} + {{ end }} + + {{ $prevIndex := sub $currentIndex 1 }} + {{ $nextIndex := add $currentIndex 1 }} + {{ $prevPage := index $pages $prevIndex }} + {{ $nextPage := index $pages $nextIndex }} + + {{ if or $prevPage $nextPage }} +
+
+ {{ with $prevPage }} + + + + +
+ Previous + {{ .Title }} +
+
+ {{ end }} +
+
+ {{ with $nextPage }} + +
+ Next + {{ .Title }} +
+ + + +
+ {{ end }} +
+
+ {{ end }} +
+ + +
+{{ end }}