Commit Graph

1339 Commits

Author SHA1 Message Date
Matthieu MOREL
9e9b6cc42e fix(ST1019): Importing the same package multiple times
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-05-01 14:17:59 +02:00
Matthieu MOREL
27bf320a72 fix(ST1017): Don’t use Yoda conditions
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-05-01 14:17:59 +02:00
Matthieu MOREL
e2e7f9964f fix(QF1003): Convert if/else-if chain to tagged switch
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-05-01 14:16:45 +02:00
Matthieu MOREL
b0711d5fe9 fix(QF1001): Apply De Morgan’s law
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-05-01 14:16:44 +02:00
Sebastiaan van Stijn
e547b63e1a Merge pull request #49899 from jsternberg/buildkit-gc-enabled-default
config: set buildkit gc enabled to default to true
2025-05-01 13:18:59 +02:00
Jonathan A. Sternberg
a79d081aa5 config: set buildkit gc enabled to default to true
This will use the default settings for buildkit gc unless explicitly
disabled by setting `enabled: false` in the gc configuration.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2025-04-29 14:05:57 -05:00
Sebastiaan van Stijn
6da1ff6bf9 builder/builder-next: fix vars that shadowed (govet)
builder/builder-next/adapters/containerimage/pull.go:912:3: shadow: declaration of "now" shadows declaration at line 905 (govet)
            now := time.Now()
            ^
    builder/builder-next/adapters/snapshot/layer.go:52:4: shadow: declaration of "diffIDs" shadows declaration at line 28 (govet)
                diffIDs, err := s.EnsureLayer(gctx, info.Parent)
                ^
    builder/builder-next/worker/worker.go:577:3: shadow: declaration of "now" shadows declaration at line 570 (govet)
            now := time.Now()
            ^

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-28 15:42:06 +02:00
Paweł Gronowski
9ee1716c41 Merge pull request #49874 from dmcgowan/container-types-to-api
Use container status values from api
2025-04-28 12:31:46 +00:00
Derek McGowan
100102108b Use container status values from api
Alias and deprecate the status types and constants from the root
container package. The root container package is intended for use
within the daemon and no the api package.

Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-04-26 07:58:09 -07:00
Sebastiaan van Stijn
bb57656932 builder/remotecontext: remove unused named and "naked" returns
Also renamed some vars for clarity, renamed a error-returns to prevent
shadowing, and fixed some linter warnings about unhandled errors.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-26 15:47:11 +02:00
Sebastiaan van Stijn
5416f2d57c builder/dockerfile: remove unused named and "naked" returns
Also renamed some vars for clarity, renamed a error-returns to prevent
shadowing, and fixed some linter warnings about unhandled errors.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-26 15:47:10 +02:00
Sebastiaan van Stijn
f38b1fa30d builder/builder-next: SanitizeRepoAndTags: remove named err return
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-26 15:47:10 +02:00
Sebastiaan van Stijn
c025dd74f0 builder/builder-next: wrapRC.Read: remove intermediate err-var
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-26 15:47:10 +02:00
Sebastiaan van Stijn
49d5b2cc8e builder/builder-next: puller.resolve: rename err-return
Prevent accidentally shadowing the error, which is used in a defers, and
while at it, also fixed some linting warnings about unhandled errors and
shadowed vars.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-26 15:47:10 +02:00
Sebastiaan van Stijn
eee14cff72 builder/remotecontext: use t.TempDir
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-25 15:27:33 +02:00
Sebastiaan van Stijn
5749bc242a builder/dockerfile: use t.TempDir, rename vars that shadowed
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-25 15:27:33 +02:00
Rob Murray
c333c0df17 Merge pull request #49843 from thaJeztah/remotecontext_deprecate_rel
builder/remotecontext: Deprecate Rel()
2025-04-23 15:11:50 +01:00
Sebastiaan van Stijn
42d149e45d fix duplicate import, and force consistent alias for bolt
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-22 11:31:10 +02:00
Sebastiaan van Stijn
972c3918c5 Merge pull request #43340 from thaJeztah/testing_remove_defers
testing: remove some defer cleanup in favor of test.Cleanup()
2025-04-22 09:43:12 +02:00
Sebastiaan van Stijn
eede75c9d4 testing: remove some defer cleanup in favor of test.Cleanup()
gotest.tools v3.0.1 and up support Go's native test.Cleanup(), which
means that manually calling the cleanup functions in a defer is no
longer needed.

Some of these could probably be replaced by Go's native `t.TempDir()`,
but keeping that for a follow-up exercise.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-19 16:35:24 +02:00
Sebastiaan van Stijn
bcc720abde builder/remotecontext: MakeGitContext: use "WithFields" for logs
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-18 18:11:40 +02:00
Sebastiaan van Stijn
54a556a5ef builder/remotecontext: Deprecate Rel()
This function was added in 684633f734, because
Go stdlib's filepath.Rel did not support Windows UUID paths (and UNC paths).

UNC paths were fixed in https://golang.org/cl/253197 (go1.17), and I think
UUID paths were also supported now.

To verify the behavior I temporarily added a unit-test to compare between
stdlib and this implementation, and it all looks to work, so we can deprecate
and remove this function. Deprecating first, but there's no (known) external
users of this, so we can likely remove in an upcoming minor (or patch) release.

    func TestRel(t *testing.T) {
        testCases := []struct {
            doc      string
            base     string
            target   string
            expected string
        }{
            {
                doc:      "UNC path",
                base:     `\\server\share`,
                target:   `\\server\share\folder\file.txt`,
                expected: `folder\file.txt`,
            },
            {
                doc:      "UUID path",
                base:     `\\?\Volume{b75e2c83-0000-0000-0000-602f00000000}\data`,
                target:   `\\?\Volume{b75e2c83-0000-0000-0000-602f00000000}\data\file.txt`,
                expected: `file.txt`,
            },
            {
                doc:      "subdirectory",
                base:     `C:\Projects`,
                target:   `C:\Projects\Go\main.go`,
                expected: `Go\main.go`,
            },
            {
                doc:      "same directory",
                base:     `C:\Projects`,
                target:   `C:\Projects`,
                expected: `.`,
            },
            {
                doc:      "parent directory",
                base:     `C:\Projects\Go`,
                target:   `C:\Projects`,
                expected: `..`,
            },
        }

        for _, tc := range testCases {
            t.Run(tc.doc, func(t *testing.T) {
                actual, err := remotecontext.Rel(tc.base, tc.target)
                if err != nil {
                    t.Fatal(err)
                }
                if actual != tc.expected {
                    t.Errorf("expected: %q, got: %q", tc.expected, actual)
                }

                // Try with stdlib
                actual, err = filepath.Rel(tc.base, tc.target)
                if err != nil {
                    t.Fatal(err)
                }
                if actual != tc.expected {
                    t.Errorf("expected: %q, got: %q", tc.expected, actual)
                }
            })
        }
    }

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-18 18:04:43 +02:00
Sebastiaan van Stijn
7c52c4d92e update go:build tags to go1.23 to align with vendor.mod
Go maintainers started to unconditionally update the minimum go version
for golang.org/x/ dependencies to go1.23, which means that we'll no longer
be able to support any version below that when updating those dependencies;

> all: upgrade go directive to at least 1.23.0 [generated]
>
> By now Go 1.24.0 has been released, and Go 1.22 is no longer supported
> per the Go Release Policy (https://go.dev/doc/devel/release#policy).
>
> For golang/go#69095.

This updates our minimum version to go1.23, as we won't be able to maintain
compatibility with older versions because of the above.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-17 15:43:19 +02:00
Sebastiaan van Stijn
fd550344b1 vendor: github.com/moby/go-archive v0.1.0
full diff: https://github.com/moby/go-archive/compare/21f3f3385ab7...v0.1.0

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-16 13:00:13 +02:00
Jonathan A. Sternberg
ae3a1ac602 vendor: github.com/moby/buildkit v0.21.0-rc1
Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2025-04-09 14:37:09 -05:00
Derek McGowan
d0154d3e59 Update to use github.com/moby/go-archive
Update use of idtools to moby/user for archive and other deprecated uses

Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-04-08 17:35:05 -07:00
Paweł Gronowski
444a1597ff c8d/builder: Fix missing image tag event with BuildKit
The builder `Named` callback was not called with the containerd image
store integration enabled and BuildKit due to wrong imageexporter output
key being used.

We have a test `TestBuildEmitsEvents` that should have detected the bug,
but it wasn't actually working because the CLI version used in the
`integration-cli` didn't support BuildKit yet.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-03-25 12:02:52 +01:00
Tonis Tiigi
d0dd035278 builder-next: fix min-free-space prune with graphdriver backend
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2025-03-10 10:47:26 -07:00
CrazyMax
65b460b9ef vendor: update buildkit to v0.20.1
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2025-03-05 17:07:25 +01:00
Sebastiaan van Stijn
0cd39d7b23 builder/remotecontext: fix naked returns
builder/remotecontext/detect.go:47:2: naked return in func `Detect` with 17 lines of code (nakedret)
        return
        ^
    builder/remotecontext/archive.go:127:2: naked return in func `normalize` with 7 lines of code (nakedret)
        return
        ^

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-04 13:55:44 +01:00
Sebastiaan van Stijn
0c1b37c50a builder/dockerfile: fix minor linting issues
- remove/rename vars that shadowed
- suppress some unhandled errors
- remove naked return

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-04 13:55:44 +01:00
Sebastiaan van Stijn
8302cd2d29 builder/dockerfile: downloadSource: fix naked returns, output vars
- use explicit returns
- rename error-return that's used in a defer
- move closing the tmpFile on error to a defer
- add debug logs for cases where either closing the file, or failing to
  remove the temp-directory

    builder/dockerfile/copy.go:369:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^
    builder/dockerfile/copy.go:374:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^
    builder/dockerfile/copy.go:382:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^
    builder/dockerfile/copy.go:398:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^
    builder/dockerfile/copy.go:407:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^
    builder/dockerfile/copy.go:428:3: naked return in func `downloadSource` with 67 lines of code (nakedret)
            return
            ^

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-04 13:55:44 +01:00
Sebastiaan van Stijn
cdbb62394c builder/dockerfile: remove intermediate var that shadowed
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-02-25 20:23:19 +01:00
CrazyMax
1fde8c4615 builder-next: fix cdi manager
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-02-18 21:48:01 +01:00
Tonis Tiigi
707d8d80b9 vendor: update buildkit to v0.20.0-rc2
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2025-02-13 19:17:43 -08:00
Tonis Tiigi
e364e28ec8 vendor: update buildkit to v0.20.0-rc1
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2025-02-12 11:00:04 -08:00
Paweł Gronowski
72b835151a Merge pull request #48720 from jsternberg/buildkit-gc-options
builder: wire up new gc types for buildkit prune functionality
2025-02-03 16:55:46 +00:00
Jonathan A. Sternberg
8e529682af builder: wire up new gc types for buildkit prune functionality
This wires up the new gc types that buildkit exposes in version 0.17.
The previous flag, `KeepBytes`, was renamed to `ReservedBytes` and two
new options, `MaxUsed` and `MinFree` were added.

`MaxUsed` corresponds to the maximum amount of space that buildkit will
use for the build cache and `MinFree` amount of free disk space for the
system to prevent the cache from using that space. This allows greater
configuration of the cache storage usage when used in situations where
docker is not the only service on the system using disk space.

Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
2025-01-30 09:54:12 -06:00
Sebastiaan van Stijn
af9ffb64cd builder/dockerfile: more consistently put "expected" on the right
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-01-27 18:46:48 +01:00
Sebastiaan van Stijn
86a8bfdce4 remove redundant uses of api/types/strslice.StrSlice
The only real purpose of strslice.StrSlice is to provide a custom
json.Unmarshaler implementation for API responses. For all other purposes,
it's a regular string-slice.

This patch removes uses of this type in cases where the custom json.Unmarshaler
is irrelevant; in most cases this was in tests, where results were tested
using "DeepEquals"; for those tests, the type-assertion did not add real
value, so we can cast the values to a []string instead.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-01-27 18:46:48 +01:00
Derek McGowan
0aa8fe0bf9 Update to containerd v2.0.2, buildkit v0.19.0-rc2
Update buildkit version to commit which uses 2.0

Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-01-15 14:09:30 +01:00
Derek McGowan
3fa5e7e6a9 Update internal use of idtools to usergroup
Signed-off-by: Derek McGowan <derek@mcg.dev>
2025-01-07 11:18:46 -08:00
Paweł Gronowski
048fece105 Alias github.com/docker/go-metrics imports
Next commits will introduce a new internal `metrics` package, so alias
the "external" import to avoid confusion.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-01-07 14:13:05 +01:00
Sebastiaan van Stijn
b7ae70033e Merge pull request #49178 from rumpl/c8d-fix-tar-build
c8d: Use the roundtripper during build
2025-01-03 19:16:46 +01:00
Sebastiaan van Stijn
0672b3b7f7 builder: use lazyregexp to compile regexes on first use
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-01-02 21:37:32 +01:00
Djordje Lukic
8d5cf1db1e Use the roundtripper during build
The roundtripper is responsible for giving back the build context when
it comes from a tar directly. So we add it to the source manager of the
containerd worker.

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
2024-12-30 23:39:52 +01:00
Sebastiaan van Stijn
8d787e3461 builder/dockerfile: unconvert
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-12-23 17:14:43 +01:00
Sebastiaan van Stijn
e783bb5c69 builder/dockerfile: remove uses of deprecated system.MkdirAll
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-12-21 14:28:34 +01:00
Paweł Gronowski
ad6929339a Merge pull request #49147 from thaJeztah/fix_gc_default
builder: don't fall back to defaultKeepStorage when set to zero
2024-12-20 12:12:30 +00:00
Sebastiaan van Stijn
275bbcd300 builder: don't fall back to defaultKeepStorage when set to zero
commit b08ff81204 updated this code to
only produce an error if an invalid value was set by the user, and to
avoid errors on empty values.

However, the intent of this code was to allow `0` as a valid value for
cases where gc is to be handled through other properties / filters.

This patch only sets the default if no value was set by the user, but
doesn't set the default if a value is set by the user, but zero.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-12-19 21:23:09 +01:00