Commit Graph
4203 Commits
Author SHA1 Message Date
Tõnis TiigiandGitHub 1e54ca2ce7 Merge pull request #3731 from tonistiigi/imagetools-push-parallelization
imagetools: share ingester across concurrent copies
2026-03-18 18:25:14 -07:00
CrazyMaxandGitHub de2c485cd9 Merge pull request #3728 from allexistence/docs-clarify-bake-env-override
docs: clarify Bake environment variable override behavior
2026-03-18 17:21:54 +01:00
rishabh 8bcf041190 docs: clarify Bake environment variable override behavior
Signed-off-by: rishabh <rishank69@gmail.com>

docs: address review feedback on bake env lookup

Signed-off-by: rishabh <rishank69@gmail.com>
2026-03-18 22:51:13 +08:00
Tonis Tiigi 78439e263b imagetools: use regex for manifest template matching
Allow optional whitespace inside the {{.Manifest}} template
delimiters when detecting whole-manifest format strings.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-17 17:46:01 -07:00
Tonis Tiigi e4f6e373af imagetools: share ingester across concurrent copies
Reuse a single ingester per target repository when imagetools create
copies multiple manifests in parallel.

This lets the pushing ingester serialize same-digest pushes and avoids
racing duplicate blob uploads against registries to work around bug in
Registry v3.0.0 (and possibly others).

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-17 17:18:55 -07:00
CrazyMax b272a37d46 history: move BuildName to util/history
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 23:49:53 +01:00
Tõnis TiigiandGitHub c461e702bf Merge pull request #3716 from crazy-max/history-fix-finalize
history: finalize export records on their owning node
2026-03-17 12:34:14 -07:00
Tõnis TiigiandGitHub 3b8709777a Merge pull request #3701 from jsternberg/dap-fix-can-invoke
dap: fix the check to determine whether exec will succeed
2026-03-17 09:36:00 -07:00
Jonathan A. Sternberg b33ef2c9d4 dap: fix the check to determine whether exec will succeed
This refines the check for determining whether exec will succeed to work
when an error occurs. This check previously relied on the `Ref` being
populated in the result context but this would only happen if we were
paused from a breakpoint or by stepping. An error would not fill in this
field.

The check is now refined to use the new gateway filesystem exec API so
we can create the container and then check even if we don't have a
returned gateway reference. The logic to determine which mount to check
has also been moved.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-17 10:31:11 -05:00
CrazyMax 5245d50a5b tests: history finalize on multi-node
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 11:08:18 +01:00
CrazyMax c4e9dfcad9 bundle: use all node content stores during export
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 11:08:18 +01:00
CrazyMaxandCrazyMax b1a2f3006b history: finalize export records on their owning node
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 11:08:18 +01:00
CrazyMax 9fef35c40b e2e: test build records export
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-17 11:02:22 +01:00
CrazyMaxandGitHub ac1a8eed8e Merge pull request #3729 from docker/dependabot/github_actions/softprops/action-gh-release-2.6.1
build(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1
2026-03-17 10:10:17 +01:00
Tõnis TiigiandGitHub 19258b1d84 Merge pull request #3691 from jsternberg/dap-entrypoint-breakpoint
dap: fix skipped breakpoint when the breakpoint and the entrypoint were the same
2026-03-16 17:58:47 -07:00
dependabot[bot]andGitHub 1effa26aac build(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/a06a81a03ee405af7f2048a818ed3f03bbf83c7b...153bb8e04406b158c6c84fc1615b65b24149a1fe)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-16 19:03:20 +00:00
Tõnis TiigiandGitHub 88b75da82d Merge pull request #3717 from crazy-max/fix-history-export-clients
history: deduplicate node clients during export
2026-03-13 17:36:47 -07:00
Tõnis TiigiandGitHub 86381f1f38 Merge pull request #3721 from tonistiigi/imagetools-oci-layout
imagetools: add oci-layout support
2026-03-13 17:34:13 -07:00
Tonis Tiigi 863398c789 imagetools: pass referrer filter opts to oci-layout path
FetchReferrers accepted FetchReferrersOpt but dropped them
when resolving OCI layout referrers. Forward the options and
apply ArtifactTypes filtering so callers can narrow results
consistently for both registry and local layout sources.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-12 23:15:01 -07:00
Tonis Tiigi 6eb48d9c8c imagetools: fix oci-layout index update when blob exists
When pushing to an OCI layout where the top-level descriptor
blob already existed, pushOCILayout returned early without
updating index.json or writing pending referrers. Restructure
the control flow so the blob-exists case skips only the write
but still updates the index and flushes referrers.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-12 22:54:35 -07:00
Tonis Tiigi 3e5c05cb1f imagetools: support oci-layout referrers
Handle OCI layout referrers via subject-annotated index entries and add
integration coverage for copying signed attestations through oci-layout.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-12 22:45:01 -07:00
Tonis Tiigi 9894189361 imagetools: support oci-layout refs
Add oci-layout:// source and target support to imagetools create and
inspect while keeping merge, filter, and referrer logic shared.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-12 22:45:01 -07:00
Tonis Tiigi 71edf28d8e tests: add negative checks for imagetools signature coverage
Verify imagetools copies signatures only for attestation manifests and
does not copy image-manifest signatures or unsupported referrers.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-12 22:45:01 -07:00
Tõnis TiigiandGitHub f14c1ae88e Merge pull request #3725 from crazy-max/update-crazy-max-github
ci: update crazy-max/.github reusable workflows to latest
2026-03-12 14:49:17 -07:00
Tõnis TiigiandGitHub 18c3dc273c Merge pull request #3724 from crazy-max/tests-multi-node
ci: run integration tests with the remote multi-node worker
2026-03-12 11:37:37 -07:00
CrazyMaxandGitHub 08152f55be Merge pull request #3727 from jsternberg/ci-netbsd-remove
ci: remove test-bsd-unit workflow
2026-03-12 17:39:08 +01:00
Jonathan A. Sternberg 8e29ab9493 ci: remove test-bsd-unit workflow
This workflow doesn't provide much value. It mostly fails on temporary
errors regarding vagrant and doesn't provide a very useful signal that
the build is broken.

We perform cross-compilation and ensure `buildx` still compiles on
different bsd variants. That should be enough to make sure we don't
inadvertently break something.

Closes #3711.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-12 10:36:36 -05:00
CrazyMax 8d14268b6f ci: update crazy-max/.github reusable workflows to latest
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-12 14:11:23 +01:00
CrazyMax 176e497922 tests: skip remote multi-node history cases
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-12 11:58:39 +01:00
CrazyMax 766592b2d1 tests: add remote multi-node worker
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-12 11:37:08 +01:00
Tõnis TiigiandGitHub 63ebbebdcf Merge pull request #3715 from tonistiigi/imagetools-test-coverage
tests: improve imagetools create integration test coverage
2026-03-11 09:09:22 -07:00
Jonathan A. Sternberg 724afbb867 dap: fix skipped breakpoint when the breakpoint and the entrypoint were the same
We erroneously skipped a breakpoint when that breakpoint was the same as
the entrypoint and we did not use stop on entry. This is because we only
started evaluating breakpoints after the first step on the entrypoint
instead of at the entrypoint.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-11 10:52:50 -05:00
CrazyMax 4643e50bd3 history: deduplicate node clients during export
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-03-11 16:24:54 +01:00
CrazyMaxandGitHub c4b5d6766e Merge pull request #3697 from crazy-max/build-arg-proxy
build: make proxy build-arg override check case-insensitive
2026-03-11 09:28:17 +01:00
Tonis Tiigi 3281dce28c tests: cover imagetools dry-run
Add dry-run assertions to imagetools merge and platform filter
integration tests to verify emitted manifest JSON before push.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 21:11:08 -07:00
Tonis Tiigi d84544176d tests: cover imagetools file input
Add integration coverage for imagetools create --file and verify a
descriptor read from disk resolves to the expected copied manifest.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 21:05:57 -07:00
Tonis Tiigi b90d59a2e9 tests: cover imagetools append
Add integration coverage for imagetools create --append and verify the
target is rewritten as a two-platform manifest list.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 21:01:48 -07:00
Tonis Tiigi 0d82d2b115 tests: cover imagetools platform filtering
Add integration coverage for imagetools create --platform on an attested
multi-platform image and verify only the matching attestation remains.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 20:53:04 -07:00
Tonis Tiigi 0a5fccb7be tests: cover imagetools signature referrers
Add integration coverage for copying attestation referrers with fake
sigstore signature manifests on a multi-platform source image.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 20:43:35 -07:00
Tonis Tiigi 5b2a4ccd2d tests: add single arch attestation fallback case to test
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 20:29:22 -07:00
Tonis Tiigi b43520b4ca tests: add imagetools test for merged create
With and without attestations.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 20:25:57 -07:00
Tonis Tiigi 2682d345fa tests: tighten imagetools copy assertions
Verify copied index content keeps the same digest and descriptor metadata.
Add function comments to clarify each imagetools integration test case.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2026-03-10 19:24:59 -07:00
Tõnis TiigiandGitHub b046c3934c Merge pull request #3712 from jsternberg/dap-skip-context-without-source
dap: skip the load build context step when it doesn't have an associated source line
2026-03-10 18:39:57 -07:00
Tõnis TiigiandGitHub 9e31c0faf1 Merge pull request #3710 from jsternberg/dap-tests-race-condition
dap: fix the race condition in the dap unit tests
2026-03-10 18:24:55 -07:00
Tõnis TiigiandGitHub 1e2b0688db Merge pull request #3709 from jsternberg/dap-loaded-source-path
dap: properly map source paths to client side paths
2026-03-10 18:08:19 -07:00
Tõnis TiigiandGitHub f09e2292fb Merge pull request #3704 from jsternberg/dap-case-insensitive-breakpoints
dap: detect breakpoints for files when the case differs
2026-03-10 18:01:49 -07:00
Jonathan A. Sternberg 3e4bd229ab dap: skip the load build context step when it doesn't have an associated source line
Skip the load build context step when it doesn't have an associated
source line. This caused an extra branch to be created in an otherwise
pretty straightforward dockerfile where stepping in on a copy
instruction that used the context would stay on the same line because it
"stepped into" the context loading rather than being treated the same as
step next.

This resulted in some bad and confusing ergonomics with the cursor
position that were a bit confusing and unexpected.

There might be more areas to try and prune but the most common one, a
single branch instruction that doesn't have a location, now gets skipped
which is the exact thing that was generated for loading the context.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-10 12:35:13 -05:00
Jonathan A. Sternberg ca9df87014 dap: fix the race condition in the dap unit tests
The context used for serving the dap server was being canceled too early
because it used defer which would initiate at the end of the function
while every other cleanup function used `t.Cleanup` which executes in
its own goroutine.

One possible solution was to move the cancel to the cleanup, but the
context being passed to serve and start doesn't make sense because if it
ever does get canceled, it'll likely cause a similar race condition with
`Stop`.

This removes the context from the methods that were causing this issue
in favor of just relying on the caller calling `Stop` when they are done
with the adapter and server.

This seems to have only affected tests and I don't believe it affected
the actual dap command.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-10 12:03:35 -05:00
Jonathan A. Sternberg 4f3de79c13 dap: properly map source paths to client side paths
Properly map the source paths from the metadata in the solve to the
client side paths. The source path returns is relative to the context
that gets uploaded which is usually a subdirectory. The original code
noticed this when mapping the paths but made the invalid assumption that
the dockerfile would always be in the context path so it combined the
dockerfile name with the context path.

It is possible for the dockerfile to be in a subdirectory of the
context. In which case, we computed the paths incorrectly.

This modifies DAP to instead use the `DockerfileMappingDst` and
`DockerfileMappingSrc` which are special included variables to the
inputs that get filled in during the build for the purpose of mapping
the source path to the client side path.

Tests have also been added for this functionality to ensure it doesn't
break again. This should work with both absolute and relative paths
although absolute paths should probably be preferred for usage just
because they're less likely to result in weird things happening.

The sources are also normalized to always convert the source filenames
to absolute paths and DAP itself will accept relative paths but will
only ever communicate in absolute paths. When you set a breakpoint, it
will convert it to an absolute path and reference it in that way rather
than a relative path.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2026-03-10 09:17:42 -05:00
Tõnis TiigiandGitHub a5f49f0c17 Merge pull request #3696 from tonistiigi/bake-linked-target-fix
build: parallelize forced reference evaluation
2026-03-09 16:44:38 -07:00