The Docker CLI
Go to file
Sebastiaan van Stijn 24186d8008
ci: fix CodeQL 2.16.4 autobuild
CodeQL 2.16.4's auto-build added support for multi-module repositories,
and is trying to be smart by searching for modules in every directory,
including vendor directories. If no module is found, it's creating one
which is ... not what we want, so let's give it a "go.mod".

Here's from a run in CI;

    /opt/hostedtoolcache/CodeQL/2.16.4/x64/codeql/codeql version --format=json
    {
      "productName" : "CodeQL",
      "vendor" : "GitHub",
      "version" : "2.16.4",
      "sha" : "9727ba3cd3d5a26f8b9347bf3c3eb4f565ac077b",
      "branches" : [
        "codeql-cli-2.16.4"
      ],
      "copyright" : "Copyright (C) 2019-2024 GitHub, Inc.",
      "unpackedLocation" : "/opt/hostedtoolcache/CodeQL/2.16.4/x64/codeql",
      "configFileLocation" : "/home/runner/.config/codeql/config",
      "configFileFound" : false,
      "features" : {
        "analysisSummaryV2Option" : true,
        "buildModeOption" : true,
        "bundleSupportsIncludeDiagnostics" : true,
        "featuresInVersionResult" : true,
        "indirectTracingSupportsStaticBinaries" : false,
        "informsAboutUnsupportedPathFilters" : true,
        "supportsPython312" : true,
        "mrvaPackCreate" : true,
        "threatModelOption" : true,
        "traceCommandUseBuildMode" : true,
        "v2ramSizing" : true,
        "mrvaPackCreateMultipleQueries" : true,
        "setsCodeqlRunnerEnvVar" : true
      }
    }

With 2.16.4, first it is unable to correlate files with the project, considering
them "stray" files;

    Attempting to automatically build go code
    /opt/hostedtoolcache/CodeQL/2.16.4/x64/codeql/go/tools/autobuild.sh
    2024/03/16 15:54:34 Autobuilder was built with go1.22.0, environment has go1.21.8
    2024/03/16 15:54:34 LGTM_SRC is /home/runner/work/cli/cli
    2024/03/16 15:54:34 Found no go.work files in the workspace; looking for go.mod files...
    2024/03/16 15:54:34 Found stray Go source file in cli/cobra.go.
    2024/03/16 15:54:34 Found stray Go source file in cli/cobra_test.go.
    2024/03/16 15:54:34 Found stray Go source file in cli/command/builder/client_test.go.
    2024/03/16 15:54:34 Found stray Go source file in cli/command/builder/cmd.go.
    ...

It then tries to build the binary, but in go modules mode, which fails (it also
seems to be doing this for each and every directory);

    Use "make dev" to start an interactive development container,
    use "make -f docker.Makefile " to execute this target
    in a container, or set DISABLE_WARN_OUTSIDE_CONTAINER=1 to
    disable this warning.

    Press Ctrl+C now to abort, or wait for the script to continue..

    ./scripts/build/binary
    Building static docker-linux-amd64
    + go build -o build/docker-linux-amd64 -tags  osusergo pkcs11 -ldflags  -X "github.com/docker/cli/cli/version.GitCommit=38c3ff6" -X "github.com/docker/cli/cli/version.BuildTime=2024-03-16T17:20:38Z" -X "github.com/docker/cli/cli/version.Version=38c3ff6.m" -extldflags -static -buildmode=pie github.com/docker/cli/cmd/docker
    cannot find package "github.com/docker/cli/cmd/docker" in any of:
        /opt/hostedtoolcache/go/1.21.8/x64/src/github.com/docker/cli/cmd/docker (from $GOROOT)
        /home/runner/go/src/github.com/docker/cli/cmd/docker (from $GOPATH)
    make: *** [Makefile:62: binary] Error 1
    2024/03/16 17:20:38 Running /usr/bin/make [make] failed, continuing anyway: exit status 2
    2024/03/16 17:20:38 Build failed, continuing to install dependencies.
    2024/03/16 17:20:38 The code in vendor/gotest.tools/v3/skip seems to be missing a go.mod file. Attempting to initialize one...
    2024/03/16 17:20:38 Import path is 'github.com/docker/cli'

If also seems to be doing this for ... every package?

    cat 0_codeql.log | grep 'you are not in a container' | wc -l
    497

After which it starts to create modules out of every directory;

    The code in internal/test/network seems to be missing a go.mod file. Attempting to initialize one...
    The code in internal/test/notary seems to be missing a go.mod file. Attempting to initialize one...
    The code in internal/test/output seems to be missing a go.mod file. Attempting to initialize one...
    The code in opts seems to be missing a go.mod file. Attempting to initialize one...
    The code in service seems to be missing a go.mod file. Attempting to initialize one...
    The code in service/logs seems to be missing a go.mod file. Attempting to initialize one...
    The code in templates seems to be missing a go.mod file. Attempting to initialize one...
    The code in vendor seems to be missing a go.mod file. Attempting to initialize one...
    The code in vendor/dario.cat seems to be missing a go.mod file. Attempting to initialize one...
    The code in vendor/dario.cat/mergo seems to be missing a go.mod file. Attempting to initialize one...
    ...
    Skipping dependency package regexp.
    Skipping dependency package github.com/opencontainers/go-digest.
    Skipping dependency package github.com/distribution/reference.
    Extracting /home/runner/work/cli/cli/cli/command/go.mod
    Done extracting /home/runner/work/cli/cli/cli/command/go.mod (1ms)
    Extracting /home/runner/work/cli/cli/cli/command/go.mod
    Done extracting /home/runner/work/cli/cli/cli/command/go.mod (0ms)
    Extracting /home/runner/work/cli/cli/cli/command/go.mod
    Done extracting /home/runner/work/cli/cli/cli/command/go.mod (0ms)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-03-17 14:27:10 +01:00
.github ci: fix CodeQL 2.16.4 autobuild 2024-03-17 14:27:10 +01:00
cli cli/command: deprecate EventHandler and InitEventHandler 2024-03-11 13:25:22 +01:00
cli-plugins plugins: fix encoding for OTEL env var passed to plugin 2024-02-28 12:43:07 -08:00
cmd/docker builder: correct the command path for docker build 2024-03-15 11:36:38 -05:00
contrib/completion Fixed typo in bash completion functions 2024-02-17 17:11:28 +11:00
dockerfiles update to go1.21.8 2024-03-05 22:08:26 +01:00
docs Merge pull request #4916 from dvdksn/docs-typos-corrections 2024-03-14 13:20:39 +01:00
e2e update to go1.21.8 2024-03-05 22:08:26 +01:00
experimental experimental: fix broken link to "checkpoint and restore" page 2021-09-07 13:30:48 +02:00
internal/test fix: cli prompt termination exit code 2024-03-04 15:26:17 +01:00
man man/docker-build.1: typo in parameter variable: CID => IID 2024-02-16 11:10:06 +01:00
opts mount: Add `volume-subpath` option 2024-02-13 14:04:00 +01:00
scripts docs: regenerate markdown 2024-02-21 10:40:13 +01:00
service/logs service/logs: use strings.Cut 2022-12-29 15:19:31 +01:00
templates add //go:build directives to prevent downgrading to go1.16 language 2023-12-14 15:03:46 +01:00
vendor vendor: github.com/docker/docker v26.0.0-rc2 2024-03-08 17:10:05 +01:00
.dockerignore validate manpages target 2022-02-25 17:11:17 +01:00
.gitattributes fix linguist with .gitattributes 2021-12-16 21:16:02 +01:00
.gitignore validate manpages target 2022-02-25 17:11:17 +01:00
.golangci.yml templates: linting: fix "error return value is not checked (errchkjson) 2023-11-20 19:52:46 +01:00
.mailmap update authors and mailmap 2023-12-21 01:12:19 +01:00
AUTHORS update authors and mailmap 2023-12-21 01:12:19 +01:00
CONTRIBUTING.md - What I did 2023-10-19 16:10:27 -04:00
Dockerfile Dockerfile: update to xx 1.4.0 2024-03-11 14:24:26 +01:00
LICENSE Add project files 2017-04-17 17:49:33 -04:00
MAINTAINERS not actually a maintainer 2023-11-10 21:35:15 +01:00
Makefile docs: generate markdown 2023-01-06 22:36:47 +01:00
NOTICE switch kr/pty to creack/pty v1.1.7 2019-07-29 16:45:41 -07:00
README.md Readme: remove reference to "Docker EE" 2023-11-28 10:23:11 +01:00
TESTING.md tweak description of login/logout 2022-04-04 10:44:11 +02:00
VERSION Update version to v25.0.0-dev 2023-05-08 08:57:19 +02:00
codecov.yml Drop support for (archived) Compose-on-Kubernetes 2022-02-22 13:47:34 +01:00
docker-bake.hcl Merge pull request #4923 from vvoland/cli-arm64 2024-03-06 09:08:20 -07:00
docker.Makefile Cleanup of dockerfiles, compose files and env vars 2024-02-13 13:32:45 +00:00
vendor.mod vendor: github.com/docker/docker v26.0.0-rc2 2024-03-08 17:10:05 +01:00
vendor.sum vendor: github.com/docker/docker v26.0.0-rc2 2024-03-08 17:10:05 +01:00

README.md

Docker CLI

PkgGoDev Build Status Test Status Go Report Card Codecov

About

This repository is the home of the Docker CLI.

Development

docker/cli is developed using Docker.

Build CLI from source:

docker buildx bake

Build binaries for all supported platforms:

docker buildx bake cross

Build for a specific platform:

docker buildx bake --set binary.platform=linux/arm64 

Build dynamic binary for glibc or musl:

USE_GLIBC=1 docker buildx bake dynbinary 

Run all linting:

docker buildx bake lint shellcheck

Run test:

docker buildx bake test

List all the available targets:

make help

In-container development environment

Start an interactive development environment:

make -f docker.Makefile shell

Brought to you courtesy of our legal counsel. For more context, please see the NOTICE document in this repo.

Use and transfer of Docker may be subject to certain restrictions by the United States and other governments.

It is your responsibility to ensure that your use and/or transfer does not violate applicable laws.

For more information, please see https://www.bis.doc.gov

Licensing

docker/cli is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.