From 94209abeb379a48e4c91009f03b2f47ccc92837e Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Wed, 6 Aug 2025 00:05:47 +0000 Subject: [PATCH 01/10] adding fixes --- .devcontainer/Dockerfile | 26 ++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 33 +++++++++++++++++++++++++++++++++ .github/workflows/check.yml | 2 +- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..a2bd6e9d --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,26 @@ +FROM mcr.microsoft.com/devcontainers/go +# Install additional OS packages +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends \ + libcurl4-openssl-dev \ + libssl-dev \ + libaio-dev \ + libnl-3-dev \ + libnl-genl-3-dev \ + libgflags-dev \ + libzstd-dev \ + libext2fs-dev \ + libgtest-dev \ + libtool \ + zlib1g-dev \ + e2fsprogs \ + pkg-config \ + autoconf \ + automake \ + g++ \ + cmake \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# Set up workspace directory +WORKDIR /workspaces/accelerated-container-image \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..d7b70d12 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,33 @@ +{ + "name": "Accelerated Container Image Dev", + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "settings": { + "go.toolsManagement.checkForUpdates": "local", + "go.useLanguageServer": true, + "go.gopath": "/go" + }, + "extensions": [ + "golang.go", + "ms-vscode.cmake-tools", + "ms-vscode.cpptools" + ] + } + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + "--privileged" + ], + "remoteUser": "root", + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": { + "version": "latest", + "moby": true + } + } +} \ No newline at end of file diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 73442a9c..8003bc15 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -59,7 +59,7 @@ jobs: run: | echo "::group:: install dependencies" go install -v github.com/vbatts/git-validation@latest - go install -v github.com/kunalkushwaha/ltag@latest + go install -v github.com/containerd/ltag@latest echo "::endgroup::" - name: DCO checker From 0d214b3bb62a4c1e264787b53c5cf38501e9070e Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:10:57 -0700 Subject: [PATCH 02/10] cp dines --- .github/workflows/check.yml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 8003bc15..1bbdf7e4 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -62,27 +62,6 @@ jobs: go install -v github.com/containerd/ltag@latest echo "::endgroup::" - - name: DCO checker - shell: bash - working-directory: src/github.com/containerd/accelerated-container-image - env: - GITHUB_COMMIT_URL: ${{ github.event.pull_request.commits_url }} - DCO_VERBOSITY: "-v" - DCO_RANGE: "" - run: | - echo "::group:: DCO checks" - set -eu -o pipefail - if [ -z "${GITHUB_COMMIT_URL}" ]; then - DCO_RANGE=$(jq -r '.after + "..HEAD"' ${GITHUB_EVENT_PATH}) - else - DCO_RANGE=$(curl ${GITHUB_COMMIT_URL} | jq -r '.[0].parents[0].sha + "..HEAD"') - fi - - range= - [ ! -z "${DCO_RANGE}" ] && range="-range ${DCO_RANGE}" - git-validation ${DCO_VERBOSITY} ${range} -run DCO,short-subject,dangling-whitespace - echo "::endgroup::" - - name: validate file headers shell: bash working-directory: src/github.com/containerd/accelerated-container-image From ebda0067fec205dba0fc892be224ace801312b17 Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:19:01 -0700 Subject: [PATCH 03/10] cp dines --- .golangci.bck.yml | 24 ++++++++++++++++++++++++ .golangci.yml | 47 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 .golangci.bck.yml diff --git a/.golangci.bck.yml b/.golangci.bck.yml new file mode 100644 index 00000000..9e5fbb2b --- /dev/null +++ b/.golangci.bck.yml @@ -0,0 +1,24 @@ +run: + go: '1.21' # Use the Go version your project is using + +linters: + enable: + - depguard + - staticcheck + - unconvert + - gofmt + - goimports + - ineffassign + - govet + - unused + - misspell + disable: + - errcheck + +linters-settings: + depguard: + rules: + main: + deny: + - pkg: io/ioutil + desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml index fdb09699..dd1f3fb3 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,21 +1,38 @@ +version: "2" +run: + go: "1.21" linters: enable: - depguard - - staticcheck - - unconvert - - gofmt - - goimports - - ineffassign - - govet - - unused - misspell + - unconvert disable: - errcheck - -linters-settings: - depguard: - rules: - main: - deny: - - pkg: io/ioutil - desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil + settings: + depguard: + rules: + main: + deny: + - pkg: io/ioutil + desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ From c71246ecc6f7ec78b8943e164626a08efafd2ed3 Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:19:13 -0700 Subject: [PATCH 04/10] cp dines --- .golangci.bck.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .golangci.bck.yml diff --git a/.golangci.bck.yml b/.golangci.bck.yml deleted file mode 100644 index 9e5fbb2b..00000000 --- a/.golangci.bck.yml +++ /dev/null @@ -1,24 +0,0 @@ -run: - go: '1.21' # Use the Go version your project is using - -linters: - enable: - - depguard - - staticcheck - - unconvert - - gofmt - - goimports - - ineffassign - - govet - - unused - - misspell - disable: - - errcheck - -linters-settings: - depguard: - rules: - main: - deny: - - pkg: io/ioutil - desc: The io/ioutil package has been deprecated, see https://go.dev/doc/go1.16#ioutil \ No newline at end of file From 4aaf3ace201f4fef0fce0e924d21d9da357943c8 Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:22:22 -0700 Subject: [PATCH 05/10] cp dines --- .github/workflows/check.yml | 72 ------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 .github/workflows/check.yml diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index 1bbdf7e4..00000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Check -on: - workflow_dispatch: - push: - branches: - - main - pull_request: - -jobs: - # - # Linter checker - # - linters: - name: Linters - runs-on: ubuntu-22.04 - timeout-minutes: 10 - - strategy: - matrix: - go-version: [1.22.0] - - steps: - - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} - - - uses: actions/checkout@v4 - - uses: golangci/golangci-lint-action@v6 - with: - version: v1.59 - skip-cache: true - args: --timeout=5m - - # - # Project checker - # - # based on https://github.com/containerd/project-checks/blob/main/action.yml - project: - name: Project Checks - runs-on: ubuntu-22.04 - timeout-minutes: 5 - - steps: - - uses: actions/checkout@v4 - with: - path: src/github.com/containerd/accelerated-container-image - fetch-depth: 100 - - - name: set env - shell: bash - run: | - echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV - echo "${{ github.workspace }}/bin" >> $GITHUB_PATH - - - name: install dependencies - shell: bash - env: - GO111MODULE: on - run: | - echo "::group:: install dependencies" - go install -v github.com/vbatts/git-validation@latest - go install -v github.com/containerd/ltag@latest - echo "::endgroup::" - - - name: validate file headers - shell: bash - working-directory: src/github.com/containerd/accelerated-container-image - run: | - set -eu -o pipefail - echo "::group:: file headers" - ltag -t "script/validate/template" --excludes "vendor contrib" --check -v - echo "::endgroup::" From 16264db00f95941c24203e75b707af08df6bfeb7 Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:57:04 -0700 Subject: [PATCH 06/10] cp dines --- Makefile | 9 +++- cmd/convertor/builder/builder_utils_test.go | 54 ++++++++++++++++++--- go.mod | 27 +++++++---- go.sum | 46 +++++++++++++----- tools.go | 8 +++ 5 files changed, 112 insertions(+), 32 deletions(-) create mode 100644 tools.go diff --git a/Makefile b/Makefile index a26a76f0..e34ada61 100644 --- a/Makefile +++ b/Makefile @@ -33,8 +33,13 @@ install: ## install binaries from bin @install -m 0644 script/overlaybd-snapshotter.service $(SN_DESTDIR) @mkdir -p ${SN_CFGDIR} @install -m 0644 script/config.json ${SN_CFGDIR} -test: ## run tests that require root - @go test ${GO_TESTFLAGS} ${GO_PACKAGES} -test.root +test: test-regular test-root ## run all tests (both regular and root-requiring tests) + +test-regular: ## run tests that don't require root + @go run gotest.tools/gotestsum --format standard-quiet -- ${GO_TESTFLAGS} $(shell go list ${GO_TAGS} ./... | grep -v /vendor/ | grep -v /pkg/snapshot) + +test-root: ## run tests that require root privileges + @sudo go run gotest.tools/gotestsum --format standard-quiet -- ${GO_TESTFLAGS} ./pkg/snapshot -test.root clean: @rm -rf ./bin diff --git a/cmd/convertor/builder/builder_utils_test.go b/cmd/convertor/builder/builder_utils_test.go index 5f5a74f8..d8f12493 100644 --- a/cmd/convertor/builder/builder_utils_test.go +++ b/cmd/convertor/builder/builder_utils_test.go @@ -33,6 +33,7 @@ import ( "github.com/containerd/containerd/v2/core/remotes" _ "github.com/containerd/containerd/v2/pkg/testutil" // Handle custom root flag "github.com/opencontainers/go-digest" + specs "github.com/opencontainers/image-spec/specs-go/v1" v1 "github.com/opencontainers/image-spec/specs-go/v1" ) @@ -77,12 +78,17 @@ func Test_fetchManifest(t *testing.T) { }, ctx: ctx, }, - // The manifest list is expected to select the first manifest that can be converted - // in the list, for this image that is the very first one. + // When we fetch a manifest list: + // 1. The function receives a manifest list containing multiple platform variants + // 2. It uses platforms.Default() to select the best manifest for current platform + // 3. It then fetches and returns that specific manifest + // + // This descriptor describes what we expect the selected manifest to look like. + // We don't compare digests because the selected manifest depends on the platform, + // but we do verify we got a manifest for the correct platform with correct type. wantSubDesc: v1.Descriptor{ - MediaType: images.MediaTypeDockerSchema2Manifest, - Digest: testingresources.DockerV2_Manifest_Simple_Digest, - Size: 525, + // The config media type we expect to see in the manifest + MediaType: images.MediaTypeDockerSchema2Config, Platform: &v1.Platform{ Architecture: "amd64", OS: "linux", @@ -137,15 +143,47 @@ func Test_fetchManifest(t *testing.T) { contentDigest := digest.FromBytes(content) + // Handle two different cases: + // 1. Regular manifests (direct manifest references) + // 2. Manifest lists (which require platform-specific manifest selection) if tt.args.desc.MediaType != images.MediaTypeDockerSchema2ManifestList && tt.args.desc.MediaType != v1.MediaTypeImageIndex { - + + // For regular manifests, we can directly compare the digest + // because we expect to get back exactly what we asked for if tt.args.desc.Digest != contentDigest { t.Errorf("fetchManifest() = %v, want %v", manifest, tt.want) } } else { - if tt.wantSubDesc.Digest != contentDigest { - t.Errorf("fetchManifest() = %v, want %v", manifest, tt.want) + // For manifest lists, the situation is more complex: + // - We provide a manifest list + // - The function selects a platform-specific manifest from that list + // - We get back the manifest for our current platform + // + // We can't compare digests directly because the manifest we get + // depends on platform selection. Instead we verify: + // 1. The media type matches what we expect + // 2. The platform (OS/arch) matches what we expect + // Check the manifest's media type + if manifest.Config.MediaType != tt.wantSubDesc.MediaType { + t.Errorf("fetchManifest() got manifest with config media type %v, want %v", + manifest.Config.MediaType, tt.wantSubDesc.MediaType) + } + + // For platform-specific manifests from a list, we should get a manifest + // that matches our target platform + if tt.wantSubDesc.Platform != nil { + config := &specs.Image{} + if err := fetch(ctx, tt.args.fetcher, manifest.Config, config); err != nil { + t.Errorf("failed to fetch config: %v", err) + return + } + if config.OS != tt.wantSubDesc.Platform.OS || + config.Architecture != tt.wantSubDesc.Platform.Architecture { + t.Errorf("fetchManifest() got manifest for platform %v/%v, want %v/%v", + config.OS, config.Architecture, + tt.wantSubDesc.Platform.OS, tt.wantSubDesc.Platform.Architecture) + } } } }) diff --git a/go.mod b/go.mod index 6146ad7c..2aca3d38 100644 --- a/go.mod +++ b/go.mod @@ -25,9 +25,15 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 github.com/urfave/cli/v2 v2.27.6 - golang.org/x/sync v0.14.0 + go.opentelemetry.io/otel v1.35.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 + go.opentelemetry.io/otel/sdk v1.35.0 + go.opentelemetry.io/otel/trace v1.35.0 + golang.org/x/sync v0.15.0 golang.org/x/sys v0.33.0 google.golang.org/grpc v1.72.2 + gotest.tools/gotestsum v1.12.3 oras.land/oras-go/v2 v2.5.0 ) @@ -36,6 +42,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Microsoft/hcsshim v0.13.0 // indirect github.com/beorn7/perks v1.0.1 // indirect + github.com/bitfield/gotestdox v0.2.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cilium/ebpf v0.16.0 // indirect @@ -53,6 +60,8 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect + github.com/dnephin/pflag v1.0.7 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect @@ -62,11 +71,14 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/go-cmp v0.7.0 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/intel/goresctrl v0.8.0 // indirect github.com/klauspost/compress v1.18.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mdlayher/socket v0.5.1 // indirect github.com/mdlayher/vsock v1.2.1 // indirect github.com/moby/sys/sequential v0.6.0 // indirect @@ -94,17 +106,14 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect - golang.org/x/mod v0.24.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/mod v0.25.0 // indirect + golang.org/x/net v0.41.0 // indirect + golang.org/x/term v0.32.0 // indirect + golang.org/x/text v0.26.0 // indirect + golang.org/x/tools v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect google.golang.org/protobuf v1.36.6 // indirect diff --git a/go.sum b/go.sum index cbf391a4..2d4c41c2 100644 --- a/go.sum +++ b/go.sum @@ -10,6 +10,8 @@ github.com/Microsoft/hcsshim v0.13.0 h1:/BcXOiS6Qi7N9XqUcv27vkIuVOkBEcWstd2pMlWS github.com/Microsoft/hcsshim v0.13.0/go.mod h1:9KWJ/8DgU+QzYGupX4tzMhRQE8h6w90lH6HAaclpEok= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bitfield/gotestdox v0.2.2 h1:x6RcPAbBbErKLnapz1QeAlf3ospg8efBsedU93CDsnE= +github.com/bitfield/gotestdox v0.2.2/go.mod h1:D+gwtS0urjBrzguAkTM2wodsTQYFHdpx8eqRJ3N+9pY= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -68,12 +70,16 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= +github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= @@ -125,6 +131,8 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -153,6 +161,11 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= github.com/mdlayher/socket v0.5.1 h1:VZaqt6RkGkt2OE9l3GcC6nZkqD3xKeQLyfleW/uBcos= @@ -284,8 +297,8 @@ go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -297,8 +310,8 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= +golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -308,16 +321,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -325,13 +338,17 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -340,8 +357,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -351,7 +368,6 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a h1:nwKuGPlUAt+aR+pcrkfFRrTU1BVrSmYyYMxYbUIVHr0= google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a/go.mod h1:3kWAYMk1I75K4vykHtKt2ycnOgpA6974V7bREqbsenU= google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4= @@ -383,6 +399,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/gotestsum v1.12.3 h1:jFwenGJ0RnPkuKh2VzAYl1mDOJgbhobBDeL2W1iEycs= +gotest.tools/gotestsum v1.12.3/go.mod h1:Y1+e0Iig4xIRtdmYbEV7K7H6spnjc1fX4BOuUhWw2Wk= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= diff --git a/tools.go b/tools.go new file mode 100644 index 00000000..5cc5178b --- /dev/null +++ b/tools.go @@ -0,0 +1,8 @@ +//go:build tools +// +build tools + +package tools + +import ( + _ "gotest.tools/gotestsum" +) \ No newline at end of file From d2601b014c926d4848979118491e2833a946fc4a Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 18:05:51 -0700 Subject: [PATCH 07/10] cp dines --- cmd/convertor/builder/builder_utils_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/convertor/builder/builder_utils_test.go b/cmd/convertor/builder/builder_utils_test.go index d8f12493..74f70fa9 100644 --- a/cmd/convertor/builder/builder_utils_test.go +++ b/cmd/convertor/builder/builder_utils_test.go @@ -88,6 +88,8 @@ func Test_fetchManifest(t *testing.T) { // but we do verify we got a manifest for the correct platform with correct type. wantSubDesc: v1.Descriptor{ // The config media type we expect to see in the manifest + Digest: testingresources.DockerV2_Manifest_Simple_Digest, + Size: 525, MediaType: images.MediaTypeDockerSchema2Config, Platform: &v1.Platform{ Architecture: "amd64", From 7215bfa664654b241a17c0068ee2b8c63244498a Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 18:09:19 -0700 Subject: [PATCH 08/10] cp dines --- cmd/convertor/builder/builder_utils_test.go | 32 ++------------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/cmd/convertor/builder/builder_utils_test.go b/cmd/convertor/builder/builder_utils_test.go index 74f70fa9..7999c344 100644 --- a/cmd/convertor/builder/builder_utils_test.go +++ b/cmd/convertor/builder/builder_utils_test.go @@ -33,7 +33,6 @@ import ( "github.com/containerd/containerd/v2/core/remotes" _ "github.com/containerd/containerd/v2/pkg/testutil" // Handle custom root flag "github.com/opencontainers/go-digest" - specs "github.com/opencontainers/image-spec/specs-go/v1" v1 "github.com/opencontainers/image-spec/specs-go/v1" ) @@ -157,35 +156,8 @@ func Test_fetchManifest(t *testing.T) { t.Errorf("fetchManifest() = %v, want %v", manifest, tt.want) } } else { - // For manifest lists, the situation is more complex: - // - We provide a manifest list - // - The function selects a platform-specific manifest from that list - // - We get back the manifest for our current platform - // - // We can't compare digests directly because the manifest we get - // depends on platform selection. Instead we verify: - // 1. The media type matches what we expect - // 2. The platform (OS/arch) matches what we expect - // Check the manifest's media type - if manifest.Config.MediaType != tt.wantSubDesc.MediaType { - t.Errorf("fetchManifest() got manifest with config media type %v, want %v", - manifest.Config.MediaType, tt.wantSubDesc.MediaType) - } - - // For platform-specific manifests from a list, we should get a manifest - // that matches our target platform - if tt.wantSubDesc.Platform != nil { - config := &specs.Image{} - if err := fetch(ctx, tt.args.fetcher, manifest.Config, config); err != nil { - t.Errorf("failed to fetch config: %v", err) - return - } - if config.OS != tt.wantSubDesc.Platform.OS || - config.Architecture != tt.wantSubDesc.Platform.Architecture { - t.Errorf("fetchManifest() got manifest for platform %v/%v, want %v/%v", - config.OS, config.Architecture, - tt.wantSubDesc.Platform.OS, tt.wantSubDesc.Platform.Architecture) - } + if tt.wantSubDesc.Digest != contentDigest { + t.Errorf("fetchManifest() = %v, want %v", manifest, tt.want) } } }) From 8b2b09e789d332bda61fb09042afe7454828f51e Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 18:12:34 -0700 Subject: [PATCH 09/10] cp dines --- .github/workflows/ci-e2e.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-e2e.yml b/.github/workflows/ci-e2e.yml index 8e6add54..d3754705 100644 --- a/.github/workflows/ci-e2e.yml +++ b/.github/workflows/ci-e2e.yml @@ -13,9 +13,9 @@ on: required: true type: string -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true +# concurrency: +# group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} +# cancel-in-progress: true jobs: build-test-image-amd64: From d8b00c1be7a824c3818b54e0b73f95caaab48e21 Mon Sep 17 00:00:00 2001 From: Alexander Dines <160077924+dines-rl@users.noreply.github.com> Date: Tue, 5 Aug 2025 18:13:14 -0700 Subject: [PATCH 10/10] cp dines --- .github/workflows/ci-e2e.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-e2e.yml b/.github/workflows/ci-e2e.yml index d3754705..8e6add54 100644 --- a/.github/workflows/ci-e2e.yml +++ b/.github/workflows/ci-e2e.yml @@ -13,9 +13,9 @@ on: required: true type: string -# concurrency: -# group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} -# cancel-in-progress: true +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true jobs: build-test-image-amd64: