From 3a9a9327919ff51309269a288ecbd72b550be9d0 Mon Sep 17 00:00:00 2001 From: Alexei Dodon Date: Thu, 28 Sep 2023 21:59:52 +0300 Subject: [PATCH] fix: reduce test run time (#1832) Signed-off-by: Alexei Dodon --- .../{bug_report.yml => bug_report.yaml} | 0 ...ature_request.yml => feature_request.yaml} | 0 .github/actions/check-diskspace/action.yaml | 21 + .github/actions/setup-localstack/action.yaml | 19 + .../actions/teardown-localstack/action.yaml | 8 + .../{branch-cov.yml => branch-cov.yaml} | 3 +- .github/workflows/build.yaml | 103 ++ .github/workflows/{cloc.yml => cloc.yaml} | 0 .github/workflows/cluster.yaml | 2 +- .github/workflows/codeql-analysis.yml | 9 - ...nary-size.yml => compare-binary-size.yaml} | 12 +- .github/workflows/{dco.yml => dco.yaml} | 1 - .github/workflows/ecosystem-tools.yaml | 37 +- .github/workflows/gc-stress-test.yaml | 36 +- .github/workflows/golangci-lint.yaml | 5 +- .github/workflows/nightly.yaml | 38 +- ...action.yml => oci-conformance-action.yaml} | 0 .github/workflows/{ci-cd.yml => publish.yaml} | 167 +--- .../{scorecards.yml => scorecards.yaml} | 0 .github/workflows/test.yaml | 159 ++++ .../workflows/{web-scan.yml => web-scan.yaml} | 0 Makefile | 76 +- README.md | 2 +- THIRD-PARTY-LICENSES.md | 880 ++++++++++-------- build/Dockerfile-conformance | 6 +- 25 files changed, 879 insertions(+), 705 deletions(-) rename .github/ISSUE_TEMPLATE/{bug_report.yml => bug_report.yaml} (100%) rename .github/ISSUE_TEMPLATE/{feature_request.yml => feature_request.yaml} (100%) create mode 100644 .github/actions/check-diskspace/action.yaml create mode 100644 .github/actions/setup-localstack/action.yaml create mode 100644 .github/actions/teardown-localstack/action.yaml rename .github/workflows/{branch-cov.yml => branch-cov.yaml} (85%) create mode 100644 .github/workflows/build.yaml rename .github/workflows/{cloc.yml => cloc.yaml} (100%) rename .github/workflows/{compare-binary-size.yml => compare-binary-size.yaml} (82%) rename .github/workflows/{dco.yml => dco.yaml} (93%) rename .github/workflows/{oci-conformance-action.yml => oci-conformance-action.yaml} (100%) rename .github/workflows/{ci-cd.yml => publish.yaml} (62%) rename .github/workflows/{scorecards.yml => scorecards.yaml} (100%) create mode 100644 .github/workflows/test.yaml rename .github/workflows/{web-scan.yml => web-scan.yaml} (100%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.yml rename to .github/ISSUE_TEMPLATE/bug_report.yaml diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .github/ISSUE_TEMPLATE/feature_request.yaml diff --git a/.github/actions/check-diskspace/action.yaml b/.github/actions/check-diskspace/action.yaml new file mode 100644 index 00000000..cf6689d2 --- /dev/null +++ b/.github/actions/check-diskspace/action.yaml @@ -0,0 +1,21 @@ +name: 'Check disk space' +description: 'Show available disk space' +runs: + using: "composite" + steps: + - shell: bash + if: always() + run: | + cd $GITHUB_WORKSPACE + set -x + df -h + sudo ls -lRh /tmp/* || true + sudo du -sh /tmp || true + sudo du -sh /tmp/* || true + sudo find /tmp/ -size +5M | sudo xargs ls -lh + du -sh ./* || true + find ./ -size +5M | xargs ls -lh + sudo du -sh /var/ + sudo du -sh /var/lib/docker/ + du -sh /home/runner/work/ + set +x diff --git a/.github/actions/setup-localstack/action.yaml b/.github/actions/setup-localstack/action.yaml new file mode 100644 index 00000000..3c4cdff3 --- /dev/null +++ b/.github/actions/setup-localstack/action.yaml @@ -0,0 +1,19 @@ +name: 'Setup localstack service' +description: 'Download & run localstack container' +runs: + using: "composite" + steps: + - shell: bash + run: | + pip install localstack # Install LocalStack cli + docker pull localstack/localstack:2.2 # Make sure to pull the latest version of the image + localstack start -d # Start LocalStack in the background + + echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container + localstack wait -t 30 # to become ready before timing out + echo "Startup complete" + + aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 + env: + AWS_ACCESS_KEY_ID: fake + AWS_SECRET_ACCESS_KEY: fake diff --git a/.github/actions/teardown-localstack/action.yaml b/.github/actions/teardown-localstack/action.yaml new file mode 100644 index 00000000..5060f53f --- /dev/null +++ b/.github/actions/teardown-localstack/action.yaml @@ -0,0 +1,8 @@ +name: 'Stop localstack' +description: 'Stop localstack container' +runs: + using: "composite" + steps: + - shell: bash + if: always() + run: localstack stop diff --git a/.github/workflows/branch-cov.yml b/.github/workflows/branch-cov.yaml similarity index 85% rename from .github/workflows/branch-cov.yml rename to .github/workflows/branch-cov.yaml index 6f706e71..ccd44b51 100644 --- a/.github/workflows/branch-cov.yml +++ b/.github/workflows/branch-cov.yaml @@ -23,7 +23,6 @@ jobs: run: | cd $GITHUB_WORKSPACE sudo apt-get update - sudo apt-get install -y libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config mkdir -p test/data cd test/data ../scripts/gen_certs.sh @@ -36,6 +35,6 @@ jobs: for i in $(find . -type f \( -name "*.go" -not -name "*_test.go" -not -name "generated.go" \)); do echo $i; gobco -test '-tags=sync,search,scrub,metrics,containers_image_openpgp' $i; - gobco -test '-tags=minimal,containers_image_openpgp' $i; + gobco -test '-tags=containers_image_openpgp' $i; done diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..1c9d6576 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,103 @@ +on: + push: + branches: + - main + pull_request: + branches: + - main + release: + types: + - published +name: build + +permissions: read-all + +jobs: + build-arch: + name: Build ZOT multiarch + permissions: + contents: write + packages: write + runs-on: ubuntu-latest + strategy: + matrix: + os: [linux, darwin, freebsd] + arch: [amd64, arm64] + steps: + - name: Check out source code + uses: actions/checkout@v4 + - uses: ./.github/actions/clean-runner + - name: Install go + uses: actions/setup-go@v4 + with: + cache: false + go-version: 1.20.x + - name: Cache go dependencies + id: cache-go-dependencies + uses: actions/cache@v3 + with: + path: | + ~/go/pkg/mod + key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-mod- + - name: Cache go build output + id: cache-go-build + uses: actions/cache@v3 + with: + path: | + ~/.cache/go-build + key: ${{ matrix.os }}-${{ matrix.arch }}-go-build-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ matrix.os }}-${{ matrix.arch }}-go-build- + - name: Install go dependencies + if: steps.cache-go-dependencies.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE + go mod download + - name: Install other dependencies + run: | + cd $GITHUB_WORKSPACE + go install github.com/swaggo/swag/cmd/swag@v1.8.12 + sudo apt-get update + sudo apt-get install rpm + sudo apt-get install snapd + sudo apt-get install libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config + git clone https://github.com/containers/skopeo -b v1.12.0 $GITHUB_WORKSPACE/src/github.com/containers/skopeo + cd $GITHUB_WORKSPACE/src/github.com/containers/skopeo && \ + make bin/skopeo && \ + sudo cp bin/skopeo /usr/bin && \ + rm -rf $GITHUB_WORKSPACE/src/github.com/containers/skopeo + cd $GITHUB_WORKSPACE + curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v1.0.0-rc.4/notation_1.0.0-rc.4_linux_amd64.tar.gz + sudo tar xvzf notation.tar.gz -C /usr/bin notation + rm -f notation.tar.gz + - uses: ./.github/actions/check-diskspace + - name: Run build + timeout-minutes: 80 + run: | + echo "Building for $OS:$ARCH" + cd $GITHUB_WORKSPACE + make binary binary-minimal binary-debug cli bench exporter-minimal + env: + OS: ${{ matrix.os }} + ARCH: ${{ matrix.arch }} + - uses: ./.github/actions/check-diskspace + + - name: Generate GraphQL Introspection JSON on Release + if: github.event_name == 'release' && github.event.action == 'published' && matrix.os == 'linux' && matrix.arch == 'amd64' + run: | + bin/zot-linux-amd64 serve examples/config-search.json & + sleep 10 + curl -X POST -H "Content-Type: application/json" -d @.pkg/debug/githubWorkflows/introspection-query.json http://localhost:5000/v2/_zot/ext/search | jq > bin/zot-gql-introspection-result.json + pkill zot + + - if: github.event_name == 'release' && github.event.action == 'published' + name: Publish artifacts on releases + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: bin/z* + tag: ${{ github.ref }} + overwrite: true + file_glob: true diff --git a/.github/workflows/cloc.yml b/.github/workflows/cloc.yaml similarity index 100% rename from .github/workflows/cloc.yml rename to .github/workflows/cloc.yaml diff --git a/.github/workflows/cluster.yaml b/.github/workflows/cluster.yaml index 67f9be72..22c5266d 100644 --- a/.github/workflows/cluster.yaml +++ b/.github/workflows/cluster.yaml @@ -14,7 +14,7 @@ permissions: read-all jobs: client-tools: name: Stateless zot with shared reliable storage - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest # services: # minio: # image: minio/minio:edge-cicd diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 61f94e21..86c0e317 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -51,15 +51,6 @@ jobs: cache: false go-version: 1.20.x - - name: Install dependencies - run: | - cd $GITHUB_WORKSPACE - go install github.com/swaggo/swag/cmd/swag@v1.8.12 - go mod download - go install github.com/wadey/gocovmerge@latest - go get -u github.com/swaggo/swag/cmd/swag - go mod download - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2.21.8 diff --git a/.github/workflows/compare-binary-size.yml b/.github/workflows/compare-binary-size.yaml similarity index 82% rename from .github/workflows/compare-binary-size.yml rename to .github/workflows/compare-binary-size.yaml index 248f6463..652f08f4 100644 --- a/.github/workflows/compare-binary-size.yml +++ b/.github/workflows/compare-binary-size.yaml @@ -36,11 +36,11 @@ jobs: [[ $BINSIZE -eq $BINSIZE_MAIN ]] && echo "zot-minimal binary size is not affected by PR" && exit 0 if [[ $BINSIZE -gt $BINSIZE_MAIN ]]; then \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc)); \ echo "zot minimal binary increased by $PERCENTAGE% comparing with main"; \ if ((`bc <<< "$PERCENTAGE>=1.0"`)); then exit 1; fi; \ else \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc)); \ echo "zot minimal binary decreased by $PERCENTAGE% comparing with main"; \ fi - if: always() @@ -61,11 +61,11 @@ jobs: [[ $BINSIZE -eq $BINSIZE_MAIN ]] && echo "zb binary size is not affected by PR" && exit 0 if [[ $BINSIZE -gt $BINSIZE_MAIN ]]; then \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc)); \ echo "zb binary increased by $PERCENTAGE% comparing with main"; \ if ((`bc <<< "$PERCENTAGE>=1.0"`)); then exit 1; fi; \ else \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc)); \ echo "zb binary decreased by $PERCENTAGE% comparing with main"; \ fi - if: always() @@ -86,10 +86,10 @@ jobs: [[ $BINSIZE -eq $BINSIZE_MAIN ]] && echo "zli binary size is not affected by PR" && exit 0 if [[ $BINSIZE -gt $BINSIZE_MAIN ]]; then \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE-$BINSIZE_MAIN)*100)/$BINSIZE_MAIN" | bc)); \ echo "zli binary increased by $PERCENTAGE% comparing with main"; \ if ((`bc <<< "$PERCENTAGE>=1.0"`)); then exit 1; fi; \ else \ - PERCENTAGE=$(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc); \ + PERCENTAGE=$(printf '%.*f\n' 2 $(echo "scale=2; (($BINSIZE_MAIN-$BINSIZE)*100)/$BINSIZE_MAIN" | bc)); \ echo "zli binary decreased by $PERCENTAGE% comparing with main"; \ fi diff --git a/.github/workflows/dco.yml b/.github/workflows/dco.yaml similarity index 93% rename from .github/workflows/dco.yml rename to .github/workflows/dco.yaml index 268df50e..faabf1d9 100644 --- a/.github/workflows/dco.yml +++ b/.github/workflows/dco.yaml @@ -1,4 +1,3 @@ -# .github/workflows/dco.yml name: DCO on: pull_request: diff --git a/.github/workflows/ecosystem-tools.yaml b/.github/workflows/ecosystem-tools.yaml index 4d6bf34a..7435951c 100644 --- a/.github/workflows/ecosystem-tools.yaml +++ b/.github/workflows/ecosystem-tools.yaml @@ -22,7 +22,6 @@ jobs: with: cache: false go-version: 1.20.x - - uses: ./.github/actions/clean-runner - name: Install dependencies run: | cd $GITHUB_WORKSPACE @@ -54,21 +53,7 @@ jobs: make bin/dex ./bin/dex serve $GITHUB_WORKSPACE/test/dex/config-dev.yaml & cd $GITHUB_WORKSPACE - - name: Check disk space before build - run: | - cd $GITHUB_WORKSPACE - set -x - df -h - sudo ls -lRh /tmp/* || true - sudo du -sh /tmp || true - sudo du -sh /tmp/* || true - sudo find /tmp/ -size +5M | sudo xargs ls -lh - du -sh ./* || true - find ./ -size +5M | xargs ls -lh - sudo du -sh /var/ - sudo du -sh /var/lib/docker/ - du -sh /home/runner/work/ - set +x + - uses: ./.github/actions/check-diskspace - name: Run CI tests run: | make run-blackbox-ci @@ -76,7 +61,7 @@ jobs: run: | pip install --upgrade pyopenssl pip install localstack awscli-local[ver1] # install LocalStack cli and awslocal - docker pull localstack/localstack # Make sure to pull the latest version of the image + docker pull localstack/localstack:2.2 # Make sure to pull the latest version of the image localstack start -d # Start LocalStack in the background echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container @@ -88,19 +73,5 @@ jobs: env: AWS_ACCESS_KEY_ID: fake AWS_SECRET_ACCESS_KEY: fake - - name: Check disk space after build - if: always() - run: | - cd $GITHUB_WORKSPACE - set -x - df -h - sudo ls -lRh /tmp/* || true - sudo du -sh /tmp || true - sudo du -sh /tmp/* || true - sudo find /tmp/ -size +5M | sudo xargs ls -lh - du -sh ./* || true - find ./ -size +5M | xargs ls -lh - sudo du -sh /var/ - sudo du -sh /var/lib/docker/ - du -sh /home/runner/work/ - set +x + - uses: ./.github/actions/check-diskspace + - uses: ./.github/actions/teardown-localstack diff --git a/.github/workflows/gc-stress-test.yaml b/.github/workflows/gc-stress-test.yaml index 8140a85f..d0d62af6 100644 --- a/.github/workflows/gc-stress-test.yaml +++ b/.github/workflows/gc-stress-test.yaml @@ -75,7 +75,7 @@ jobs: run: | cat /tmp/gc-bench-local.log exit 1 - + gc-referrers-stress-s3: name: GC(with referrers) on S3(minio) with short interval runs-on: ubuntu-latest @@ -86,21 +86,7 @@ jobs: with: cache: false go-version: 1.20.x - - name: Setup localstack service - run: | - pip install localstack # Install LocalStack cli - docker pull localstack/localstack:1.3 # Make sure to pull the latest version of the image - localstack start -d # Start LocalStack in the background - - echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container - localstack wait -t 30 # to become ready before timing out - echo "Startup complete" - - # aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket zot-storage --region us-east-2 --create-bucket-configuration="{\"LocationConstraint\": \"us-east-2\"}" - aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 - env: - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake + - uses: ./.github/actions/setup-localstack - name: Setup minio service run: | docker run -d -p 9000:9000 --name minio \ @@ -164,6 +150,7 @@ jobs: run: | cat /tmp/gc-referrers-bench-s3.log exit 1 + - uses: ./.github/actions/teardown-localstack gc-stress-s3: name: GC(without referrers) on S3(minio) with short interval @@ -175,21 +162,7 @@ jobs: with: cache: false go-version: 1.20.x - - name: Setup localstack service - run: | - pip install localstack # Install LocalStack cli - docker pull localstack/localstack:1.3 # Make sure to pull the latest version of the image - localstack start -d # Start LocalStack in the background - - echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container - localstack wait -t 30 # to become ready before timing out - echo "Startup complete" - - # aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket zot-storage --region us-east-2 --create-bucket-configuration="{\"LocationConstraint\": \"us-east-2\"}" - aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 - env: - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake + - uses: ./.github/actions/setup-localstack - name: Setup minio service run: | docker run -d -p 9000:9000 --name minio \ @@ -253,3 +226,4 @@ jobs: run: | cat /tmp/gc-bench-s3.log exit 1 + - uses: ./.github/actions/teardown-localstack diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 78031a1c..631bcd7d 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -20,7 +20,7 @@ jobs: cache: false go-version: '1.20' - uses: actions/checkout@v4 - - name: golangci-lint + - name: Run linter with GH action uses: golangci/golangci-lint-action@v3 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version @@ -41,3 +41,6 @@ jobs: # Optional: if set to true then the action don't cache or restore ~/.cache/go-build. # skip-build-cache: true + - name: Run linter from make target + run: | + make check diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 674b31bf..46c7af31 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -38,7 +38,7 @@ jobs: run: | pip install --upgrade pyopenssl pip install localstack awscli-local[ver1] # install LocalStack cli and awslocal - docker pull localstack/localstack # Make sure to pull the latest version of the image + docker pull localstack/localstack:2.2 # Make sure to pull the latest version of the image localstack start -d # Start LocalStack in the background echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container @@ -52,6 +52,8 @@ jobs: env: AWS_ACCESS_KEY_ID: fake AWS_SECRET_ACCESS_KEY: fake + - uses: ./.github/actions/teardown-localstack + sync: name: Sync harness runs-on: ubuntu-latest @@ -81,21 +83,7 @@ jobs: with: cache: false go-version: 1.20.x - - name: Setup localstack service - run: | - pip install localstack # Install LocalStack cli - docker pull localstack/localstack:1.3 # Make sure to pull the latest version of the image - localstack start -d # Start LocalStack in the background - - echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container - localstack wait -t 30 # to become ready before timing out - echo "Startup complete" - - aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket zot-storage --region us-east-2 --create-bucket-configuration="{\"LocationConstraint\": \"us-east-2\"}" - aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 - env: - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake + - uses: ./.github/actions/setup-localstack - name: Run zb id: bench @@ -120,6 +108,7 @@ jobs: run: | cat /tmp/gc-referrers-bench-s3.log exit 1 + - uses: ./.github/actions/teardown-localstack gc-stress-s3: name: GC(without referrers) on S3(localstack) with short interval @@ -131,21 +120,7 @@ jobs: with: cache: false go-version: 1.20.x - - name: Setup localstack service - run: | - pip install localstack # Install LocalStack cli - docker pull localstack/localstack:1.3 # Make sure to pull the latest version of the image - localstack start -d # Start LocalStack in the background - - echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container - localstack wait -t 30 # to become ready before timing out - echo "Startup complete" - - aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket zot-storage --region us-east-2 --create-bucket-configuration="{\"LocationConstraint\": \"us-east-2\"}" - aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 - env: - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake + - uses: ./.github/actions/setup-localstack - name: Run zb id: bench @@ -170,3 +145,4 @@ jobs: run: | cat /tmp/gc-bench-s3.log exit 1 + - uses: ./.github/actions/teardown-localstack diff --git a/.github/workflows/oci-conformance-action.yml b/.github/workflows/oci-conformance-action.yaml similarity index 100% rename from .github/workflows/oci-conformance-action.yml rename to .github/workflows/oci-conformance-action.yaml diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/publish.yaml similarity index 62% rename from .github/workflows/ci-cd.yml rename to .github/workflows/publish.yaml index d8f162b8..f7f0477d 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/publish.yaml @@ -1,178 +1,13 @@ on: - push: - branches: - - main - pull_request: - branches: - - main release: types: - published -name: build-test +name: publish permissions: read-all jobs: - build-test-arch: - name: Build and test ZOT - permissions: - contents: write - packages: write - runs-on: ubuntu-latest - strategy: - matrix: - os: [linux, darwin, freebsd] - arch: [amd64, arm64] - steps: - - name: Check out source code - uses: actions/checkout@v4 - - uses: ./.github/actions/clean-runner - - name: Install go - uses: actions/setup-go@v4 - with: - cache: false - go-version: 1.20.x - - name: Cache go dependencies - id: cache-go-dependencies - uses: actions/cache@v3 - with: - path: | - ~/go/pkg/mod - key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go-mod- - - name: Cache go build output - id: cache-go-build - uses: actions/cache@v3 - with: - path: | - ~/.cache/go-build - key: ${{ matrix.os }}-${{ matrix.arch }}-go-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ matrix.os }}-${{ matrix.arch }}-go-build- - - name: Install go dependencies - if: steps.cache-go-dependencies.outputs.cache-hit != 'true' - run: | - cd $GITHUB_WORKSPACE - go mod download - - name: Install other dependencies - run: | - cd $GITHUB_WORKSPACE - go install github.com/swaggo/swag/cmd/swag@v1.8.12 - sudo apt-get update - sudo apt-get install rpm - sudo apt-get install snapd - sudo apt-get install libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config - git clone https://github.com/containers/skopeo -b v1.12.0 $GITHUB_WORKSPACE/src/github.com/containers/skopeo - cd $GITHUB_WORKSPACE/src/github.com/containers/skopeo && \ - make bin/skopeo && \ - sudo cp bin/skopeo /usr/bin && \ - rm -rf $GITHUB_WORKSPACE/src/github.com/containers/skopeo - cd $GITHUB_WORKSPACE - curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v1.0.0-rc.4/notation_1.0.0-rc.4_linux_amd64.tar.gz - sudo tar xvzf notation.tar.gz -C /usr/bin notation - rm -f notation.tar.gz - go install github.com/wadey/gocovmerge@latest - - - if: matrix.os == 'linux' && matrix.arch == 'amd64' - name: Setup localstack service - run: | - pip install localstack # Install LocalStack cli - docker pull localstack/localstack:1.3 # Make sure to pull the latest version of the image - localstack start -d # Start LocalStack in the background - - echo "Waiting for LocalStack startup..." # Wait 30 seconds for the LocalStack container - localstack wait -t 30 # to become ready before timing out - echo "Startup complete" - - aws --endpoint-url=http://localhost:4566 s3api create-bucket --bucket zot-storage --region us-east-2 --create-bucket-configuration="{\"LocationConstraint\": \"us-east-2\"}" - aws dynamodb --endpoint-url http://localhost:4566 --region "us-east-2" create-table --table-name BlobTable --attribute-definitions AttributeName=Digest,AttributeType=S --key-schema AttributeName=Digest,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 - env: - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake - - - name: Check disk space before build - run: | - cd $GITHUB_WORKSPACE - set -x - df -h - sudo ls -lRh /tmp/* || true - sudo du -sh /tmp || true - sudo du -sh /tmp/* || true - sudo find /tmp/ -size +5M | sudo xargs ls -lh - du -sh ./* || true - find ./ -size +5M | xargs ls -lh - sudo du -sh /var/ - sudo du -sh /var/lib/docker/ - du -sh /home/runner/work/ - set +x - - - name: Run build and test - timeout-minutes: 80 - run: | - echo "Building for $OS:$ARCH" - cd $GITHUB_WORKSPACE - if [[ $OS == "linux" && $ARCH == "amd64" ]]; then - make - sudo env "PATH=$PATH" make privileged-test - else - make binary binary-minimal binary-debug cli bench exporter-minimal - fi - env: - S3MOCK_ENDPOINT: localhost:4566 - DYNAMODBMOCK_ENDPOINT: http://localhost:4566 - AWS_ACCESS_KEY_ID: fake - AWS_SECRET_ACCESS_KEY: fake - OS: ${{ matrix.os }} - ARCH: ${{ matrix.arch }} - - - if: matrix.os == 'linux' && matrix.arch == 'amd64' - name: Stop localstack - run: | - localstack stop - - - name: Check disk space after build - if: always() - run: | - cd $GITHUB_WORKSPACE - set -x - df -h - sudo ls -lRh /tmp/* || true - sudo du -sh /tmp || true - sudo du -sh /tmp/* || true - sudo find /tmp/ -size +5M | sudo xargs ls -lh - du -sh ./* || true - find ./ -size +5M | xargs ls -lh - sudo du -sh /var/ - sudo du -sh /var/lib/docker/ - du -sh /home/runner/work/ - set +x - - - name: Upload code coverage - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Generate GraphQL Introspection JSON on Release - if: github.event_name == 'release' && github.event.action == 'published' && matrix.os == 'linux' && matrix.arch == 'amd64' - run: | - bin/zot-linux-amd64 serve examples/config-search.json & - sleep 10 - curl -X POST -H "Content-Type: application/json" -d @.pkg/debug/githubWorkflows/introspection-query.json http://localhost:5000/v2/_zot/ext/search | jq > bin/zot-gql-introspection-result.json - pkill zot - - - if: github.event_name == 'release' && github.event.action == 'published' - name: Publish artifacts on releases - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: bin/z* - tag: ${{ github.ref }} - overwrite: true - file_glob: true - push-image: - if: github.event_name == 'release' && github.event.action== 'published' name: Push OCI images to GitHub Packages runs-on: ubuntu-latest permissions: diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yaml similarity index 100% rename from .github/workflows/scorecards.yml rename to .github/workflows/scorecards.yaml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..5b57c1a5 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,159 @@ +name: "Running tests" +on: + push: + branches: + - main + pull_request: + branches: [main] + release: + types: + - published + +permissions: read-all + +jobs: + test-run-minimal: + name: Running zot without extensions tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/clean-runner + - name: Install go + uses: actions/setup-go@v4 + with: + cache: false + go-version: 1.20.x + - name: Cache go dependencies + id: cache-go-dependencies + uses: actions/cache@v3 + with: + path: | + ~/go/pkg/mod + key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-mod- + - name: Install go dependencies + if: steps.cache-go-dependencies.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE + go mod download + - uses: ./.github/actions/setup-localstack + - uses: ./.github/actions/check-diskspace + - name: run zot minimal tests + run: | + cd $GITHUB_WORKSPACE + make test-minimal + env: + S3MOCK_ENDPOINT: localhost:4566 + DYNAMODBMOCK_ENDPOINT: http://localhost:4566 + AWS_ACCESS_KEY_ID: fake + AWS_SECRET_ACCESS_KEY: fake + - name: upload coverage + uses: actions/upload-artifact@v3 + with: + name: coverage-minimal + path: coverage-minimal.txt + - uses: ./.github/actions/check-diskspace + - uses: ./.github/actions/teardown-localstack + test-run-extensions: + name: Run zot with extensions tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/clean-runner + - uses: actions/setup-go@v4 + with: + cache: false + go-version: 1.20.x + - name: Cache go dependencies + id: cache-go-dependencies + uses: actions/cache@v3 + with: + path: | + ~/go/pkg/mod + key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-mod- + - name: Install go dependencies + if: steps.cache-go-dependencies.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE + go mod download + - uses: ./.github/actions/setup-localstack + - uses: ./.github/actions/check-diskspace + - name: run zot extended tests + run: | + cd $GITHUB_WORKSPACE + make test-extended + env: + S3MOCK_ENDPOINT: localhost:4566 + DYNAMODBMOCK_ENDPOINT: http://localhost:4566 + AWS_ACCESS_KEY_ID: fake + AWS_SECRET_ACCESS_KEY: fake + - name: upload coverage + uses: actions/upload-artifact@v3 + with: + name: coverage-extended + path: coverage-extended.txt + - uses: ./.github/actions/check-diskspace + - uses: ./.github/actions/teardown-localstack + test-run-devmode: + name: Running privileged tests on Linux + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/clean-runner + - uses: actions/setup-go@v4 + with: + cache: false + go-version: 1.20.x + - name: Cache go dependencies + id: cache-go-dependencies + uses: actions/cache@v3 + with: + path: | + ~/go/pkg/mod + key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-mod- + - name: Install go dependencies + if: steps.cache-go-dependencies.outputs.cache-hit != 'true' + run: | + cd $GITHUB_WORKSPACE + go mod download + - uses: ./.github/actions/check-diskspace + - name: run zot development-mode unit tests (possibly using failure injection) + run: make test-devmode + - name: run zot privileged tests + run: sudo env "PATH=$PATH" make privileged-test + - name: upload coverage + uses: actions/upload-artifact@v3 + with: + name: coverage-devmode + path: coverage-dev-*.txt + - uses: ./.github/actions/check-diskspace + test-coverage: + name: Collect all test coverage + runs-on: ubuntu-latest + if: always() + needs: [test-run-minimal,test-run-extensions,test-run-devmode] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + cache: false + go-version: 1.20.x + - name: download all workflow coverage files + uses: actions/download-artifact@v3 + - name: merge code coverage + run: | + cd $GITHUB_WORKSPACE + cp coverage-minimal/* . + cp coverage-extended/* . + cp coverage-devmode/* . + make covhtml + - name: upload code coverage + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + diff --git a/.github/workflows/web-scan.yml b/.github/workflows/web-scan.yaml similarity index 100% rename from .github/workflows/web-scan.yml rename to .github/workflows/web-scan.yaml diff --git a/Makefile b/Makefile index 8bcc63ee..6b0d2258 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ REGCLIENT_VERSION := v0.4.5 CRICTL := $(TOOLSDIR)/bin/crictl CRICTL_VERSION := v1.26.1 ACTION_VALIDATOR := $(TOOLSDIR)/bin/action-validator -ACTION_VALIDATOR_VERSION := v0.2.1 +ACTION_VALIDATOR_VERSION := v0.5.3 ZUI_VERSION := commit-b787273 SWAGGER_VERSION := v1.8.12 STACKER := $(TOOLSDIR)/bin/stacker @@ -125,24 +125,37 @@ exporter-minimal: EXTENSIONS= exporter-minimal: modcheck build-metadata env CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build -o bin/zxp-$(OS)-$(ARCH) $(BUILDMODE_FLAGS) -tags containers_image_openpgp -v -trimpath ./cmd/zxp +.PHONY: test-prereq +test-prereq: check-skopeo $(TESTDATA) $(ORAS) + +.PHONY: test-extended +test-extended: $(if $(findstring ui,$(BUILD_LABELS)), ui) +test-extended: test-prereq + go test -failfast -tags $(BUILD_LABELS),containers_image_openpgp -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-extended.txt -covermode=atomic ./... + rm -rf /tmp/getter*; rm -rf /tmp/trivy* + +.PHONY: test-minimal +test-minimal: test-prereq + go test -failfast -tags containers_image_openpgp -trimpath -race -cover -coverpkg ./... -coverprofile=coverage-minimal.txt -covermode=atomic ./... + rm -rf /tmp/getter*; rm -rf /tmp/trivy* + +.PHONY: test-devmode +test-devmode: $(if $(findstring ui,$(BUILD_LABELS)), ui) +test-devmode: test-prereq + go test -failfast -tags dev,$(BUILD_LABELS),containers_image_openpgp -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-dev-extended.txt -covermode=atomic ./pkg/test/... ./pkg/api/... ./pkg/storage/... ./pkg/extensions/sync/... -run ^TestInject + rm -rf /tmp/getter*; rm -rf /tmp/trivy* + go test -failfast -tags dev,containers_image_openpgp -trimpath -race -cover -coverpkg ./... -coverprofile=coverage-dev-minimal.txt -covermode=atomic ./pkg/test/... ./pkg/storage/... ./pkg/extensions/sync/... -run ^TestInject + rm -rf /tmp/getter*; rm -rf /tmp/trivy* + go test -failfast -tags stress,$(BUILD_LABELS),containers_image_openpgp -trimpath -race -timeout 15m ./pkg/cli/server/stress_test.go + .PHONY: test test: $(if $(findstring ui,$(BUILD_LABELS)), ui) -test: check-skopeo $(TESTDATA) $(ORAS) - go test -failfast -tags $(BUILD_LABELS),containers_image_openpgp -v -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-extended.txt -covermode=atomic ./... - rm -rf /tmp/getter*; rm -rf /tmp/trivy* - go test -failfast -tags containers_image_openpgp -v -trimpath -race -cover -coverpkg ./... -coverprofile=coverage-minimal.txt -covermode=atomic ./... - rm -rf /tmp/getter*; rm -rf /tmp/trivy* - # development-mode unit tests possibly using failure injection - go test -failfast -tags dev,$(BUILD_LABELS),containers_image_openpgp -v -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-dev-extended.txt -covermode=atomic ./pkg/test/... ./pkg/api/... ./pkg/storage/... ./pkg/extensions/sync/... -run ^TestInject - rm -rf /tmp/getter*; rm -rf /tmp/trivy* - go test -failfast -tags dev,containers_image_openpgp -v -trimpath -race -cover -coverpkg ./... -coverprofile=coverage-dev-minimal.txt -covermode=atomic ./pkg/test/... ./pkg/storage/... ./pkg/extensions/sync/... -run ^TestInject - rm -rf /tmp/getter*; rm -rf /tmp/trivy* - go test -failfast -tags stress,$(BUILD_LABELS),containers_image_openpgp -v -trimpath -race -timeout 15m ./pkg/cli/server/stress_test.go +test: test-extended test-minimal test-devmode .PHONY: privileged-test privileged-test: $(if $(findstring ui,$(BUILD_LABELS)), ui) privileged-test: check-skopeo $(TESTDATA) - go test -failfast -tags needprivileges,$(BUILD_LABELS),containers_image_openpgp -v -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-dev-needprivileges.txt -covermode=atomic ./pkg/storage/local/... ./pkg/cli/client/... -run ^TestElevatedPrivileges + go test -failfast -tags needprivileges,$(BUILD_LABELS),containers_image_openpgp -trimpath -race -timeout 15m -cover -coverpkg ./... -coverprofile=coverage-dev-needprivileges.txt -covermode=atomic ./pkg/storage/local/... ./pkg/cli/client/... -run ^TestElevatedPrivileges $(TESTDATA): check-skopeo mkdir -p ${TESTDATA}; \ @@ -158,10 +171,13 @@ $(TESTDATA): check-skopeo .PHONY: run-bench run-bench: binary bench - bin/zot-$(OS)-$(ARCH) serve examples/config-bench.json & + bin/zot-$(OS)-$(ARCH) serve examples/config-bench.json & echo $$! > zot.PID sleep 5 bin/zb-$(OS)-$(ARCH) -c 10 -n 100 -o $(BENCH_OUTPUT) http://localhost:8080 - killall -r zot-* + @if [ -e zot.PID ]; then \ + kill -TERM $$(cat zot.PID) || true; \ + fi; \ + rm zot.PID .PHONY: check-skopeo check-skopeo: @@ -205,12 +221,12 @@ $(CRICTL): $(ACTION_VALIDATOR): mkdir -p $(TOOLSDIR)/bin - curl -Lo action-validator https://github.com/mpalmer/action-validator/releases/download/$(ACTION_VALIDATOR_VERSION)/action-validator_linux_amd64 + curl -Lo action-validator https://github.com/mpalmer/action-validator/releases/download/$(ACTION_VALIDATOR_VERSION)/action-validator_$(OS)_$(ARCH) mv action-validator $(TOOLSDIR)/bin/action-validator chmod +x $(TOOLSDIR)/bin/action-validator .PHONY: check-gh-actions -check-gh-actions: $(ACTION_VALIDATOR) +check-gh-actions: check-compatibility $(ACTION_VALIDATOR) for i in $$(ls .github/workflows/*); do $(ACTION_VALIDATOR) $$i; done .PHONY: covhtml @@ -229,11 +245,10 @@ check: $(if $(findstring ui,$(BUILD_LABELS)), ui) check: ./golangcilint.yaml $(GOLINTER) mkdir -p pkg/extensions/build; touch pkg/extensions/build/.empty $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags containers_image_openpgp ./... - $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags $(BUILD_LABELS),containers_image_openpgp ./... - $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags $(BUILD_LABELS),containers_image_openpgp,debug ./... - $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags dev,containers_image_openpgp ./... - $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags dev,$(BUILD_LABELS),containers_image_openpgp ./... - $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags stress,$(BUILD_LABELS),containers_image_openpgp ./... + $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags $(BUILD_LABELS),containers_image_openpgp ./... + $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags debug ./pkg/debug/swagger/ ./pkg/debug/gqlplayground + $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags dev ./pkg/test/inject/ + $(GOLINTER) --config ./golangcilint.yaml run --enable-all --out-format=colored-line-number --build-tags stress ./pkg/cli/server/ rm pkg/extensions/build/.empty .PHONY: swagger @@ -249,12 +264,13 @@ update-licenses: .PHONY: check-licenses check-licenses: +# note: "printf" works for darwin instead of "echo -n" go install github.com/google/go-licenses@latest - @for tag in "$(BUILD_LABELS),containers_image_openpgp" "$(BUILD_LABELS),containers_image_openpgp"; do \ + @for tag in "$(BUILD_LABELS),containers_image_openpgp" "containers_image_openpgp"; do \ echo Evaluating tag: $$tag;\ for mod in $$(go list -m -f '{{if not (or .Indirect .Main)}}{{.Path}}{{end}}' all); do \ while [ x$$mod != x ]; do \ - echo -n "Checking $$mod ... "; \ + printf "Checking $$mod ... "; \ result=$$(GOFLAGS="-tags=$${tag}" go-licenses check $$mod 2>&1); \ if [ $$? -eq 0 ]; then \ echo OK; \ @@ -472,3 +488,15 @@ check-linux: ifneq ($(shell go env GOOS),linux) $(error makefile target can be run only on linux) endif + +.PHONY: check-compatibility +check-compatibility: +ifeq ($(OS),freebsd) + $(error makefile target can't be run on freebsd) +endif +ifneq ($(OS),$(shell go env GOOS)) + $(error target can't be run on $(shell go env GOOS) as binary is compiled for $(OS)) +endif +ifneq ($(ARCH),$(shell go env GOARCH)) + $(error target can't be run on $(shell go env GOARCH) (binary is for $(ARCH))) +endif diff --git a/README.md b/README.md index 04bf9e0e..e5b15ea9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# zot [![build-test](https://github.com/project-zot/zot/actions/workflows/ci-cd.yml/badge.svg?branch=main)](https://github.com/project-zot/zot/actions/workflows/ci-cd.yml) [![nightly jobs](https://github.com/project-zot/zot/actions/workflows/nightly.yaml/badge.svg)](https://github.com/project-zot/zot/actions/workflows/nightly.yaml) [![codecov.io](http://codecov.io/github/project-zot/zot/coverage.svg?branch=main)](http://codecov.io/github/project-zot/zot?branch=main) [![Conformance Results](https://github.com/project-zot/zot/workflows/conformance/badge.svg)](https://github.com/project-zot/zot/actions?query=workflow%3Aconformance) [![CodeQL](https://github.com/project-zot/zot/workflows/CodeQL/badge.svg)](https://github.com/project-zot/zot/actions?query=workflow%3ACodeQL) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5425/badge)](https://bestpractices.coreinfrastructure.org/projects/5425) [![Go Reference](https://pkg.go.dev/badge/zotregistry.io/zot.svg)](https://pkg.go.dev/zotregistry.io/zot) +# zot [![build](https://github.com/project-zot/zot/actions/workflows/build.yaml/badge.svg?branch=main)](https://github.com/project-zot/zot/actions/workflows/build.yaml) [![test](https://github.com/project-zot/zot/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/project-zot/zot/actions/workflows/test.yaml) [![nightly jobs](https://github.com/project-zot/zot/actions/workflows/nightly.yaml/badge.svg)](https://github.com/project-zot/zot/actions/workflows/nightly.yaml) [![codecov.io](http://codecov.io/github/project-zot/zot/coverage.svg?branch=main)](http://codecov.io/github/project-zot/zot?branch=main) [![Conformance Results](https://github.com/project-zot/zot/workflows/conformance/badge.svg)](https://github.com/project-zot/zot/actions?query=workflow%3Aconformance) [![CodeQL](https://github.com/project-zot/zot/workflows/CodeQL/badge.svg)](https://github.com/project-zot/zot/actions?query=workflow%3ACodeQL) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5425/badge)](https://bestpractices.coreinfrastructure.org/projects/5425) [![Go Reference](https://pkg.go.dev/badge/zotregistry.io/zot.svg)](https://pkg.go.dev/zotregistry.io/zot) **zot**: a production-ready vendor-neutral OCI image registry - images stored in [OCI image format](https://github.com/opencontainers/image-spec), [distribution specification](https://github.com/opencontainers/distribution-spec) on-the-wire, that's it! diff --git a/THIRD-PARTY-LICENSES.md b/THIRD-PARTY-LICENSES.md index 03c9a541..c206e46b 100644 --- a/THIRD-PARTY-LICENSES.md +++ b/THIRD-PARTY-LICENSES.md @@ -1,399 +1,487 @@ Module | License URL | License ---|---|--- -bitbucket.org/creachadair/shell|https://bitbucket.org/creachadair/shell/src/master/LICENSE|BSD-3-Clause -cloud.google.com/go/compute/metadata|Unknown|Apache-2.0 -cloud.google.com/go/iam|Unknown|Apache-2.0 -cloud.google.com/go/internal|Unknown|Apache-2.0 -cloud.google.com/go/storage|Unknown|Apache-2.0 -cloud.google.com/go|Unknown|Apache-2.0 -github.com/99designs/gqlgen|https://github.com/99designs/gqlgen/blob/master/LICENSE|MIT -github.com/acarl005/stripansi|https://github.com/acarl005/stripansi/blob/master/LICENSE|MIT -github.com/acomagu/bufpipe|Unknown|Unknown -github.com/AdaLogics/go-fuzz-headers|https://github.com/AdaLogics/go-fuzz-headers/blob/master/LICENSE|Apache-2.0 -github.com/agext/levenshtein|https://github.com/agext/levenshtein/blob/master/LICENSE|Apache-2.0 -github.com/agnivade/levenshtein|https://github.com/agnivade/levenshtein/blob/master/License.txt|MIT -github.com/alecthomas/template|https://github.com/alecthomas/template/blob/master/LICENSE|BSD-3-Clause -github.com/apex/log|https://github.com/apex/log/blob/master/LICENSE|MIT -github.com/apparentlymart/go-textseg/v13/textseg|https://github.com/apparentlymart/go-textseg/blob/master/v13/textseg/LICENSE|MIT -github.com/aquasecurity/go-gem-version|https://github.com/aquasecurity/go-gem-version/blob/master/LICENSE|Apache-2.0 -github.com/aquasecurity/go-pep440-version|https://github.com/aquasecurity/go-pep440-version/blob/master/LICENSE|Apache-2.0 -github.com/aquasecurity/go-version/pkg/part|https://github.com/aquasecurity/go-version/blob/master/pkg/part/LICENSE|Apache-2.0 -github.com/armon/go-metrics|https://github.com/armon/go-metrics/blob/master/LICENSE|MIT -github.com/armon/go-radix|https://github.com/armon/go-radix/blob/master/LICENSE|MIT -github.com/asaskevich/govalidator|https://github.com/asaskevich/govalidator/blob/master/LICENSE|MIT -github.com/aws/aws-sdk-go|https://github.com/aws/aws-sdk-go/blob/master/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go/internal/sync/singleflight|https://github.com/aws/aws-sdk-go/blob/master/internal/sync/singleflight/LICENSE|BSD-3-Clause -github.com/aws/aws-sdk-go-v2/config|https://github.com/aws/aws-sdk-go-v2/blob/master/config/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/credentials|https://github.com/aws/aws-sdk-go-v2/blob/master/credentials/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/feature/ec2/imds|https://github.com/aws/aws-sdk-go-v2/blob/master/feature/ec2/imds/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2|https://github.com/aws/aws-sdk-go-v2/blob/master/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/internal/configsources|https://github.com/aws/aws-sdk-go-v2/blob/master/internal/configsources/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2|https://github.com/aws/aws-sdk-go-v2/blob/master/internal/endpoints/v2/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/internal/ini|https://github.com/aws/aws-sdk-go-v2/blob/master/internal/ini/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/internal/sync/singleflight|https://github.com/aws/aws-sdk-go-v2/blob/master/internal/sync/singleflight/LICENSE|BSD-3-Clause -github.com/aws/aws-sdk-go-v2/service/ecr|https://github.com/aws/aws-sdk-go-v2/blob/master/service/ecr/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/service/ecrpublic|https://github.com/aws/aws-sdk-go-v2/blob/master/service/ecrpublic/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url|https://github.com/aws/aws-sdk-go-v2/blob/master/service/internal/presigned-url/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/service/sso|https://github.com/aws/aws-sdk-go-v2/blob/master/service/sso/LICENSE.txt|Apache-2.0 -github.com/aws/aws-sdk-go-v2/service/sts|https://github.com/aws/aws-sdk-go-v2/blob/master/service/sts/LICENSE.txt|Apache-2.0 -github.com/awslabs/amazon-ecr-credential-helper/ecr-login|https://github.com/awslabs/amazon-ecr-credential-helper/blob/master/ecr-login/LICENSE|Apache-2.0 -github.com/aws/smithy-go|https://github.com/aws/smithy-go/blob/master/LICENSE|Apache-2.0 -github.com/Azure/azure-sdk-for-go|https://github.com/Azure/azure-sdk-for-go/blob/master/LICENSE.txt|MIT -github.com/Azure/go-autorest/autorest/adal|https://github.com/Azure/go-autorest/blob/master/autorest/adal/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest/azure/auth|https://github.com/Azure/go-autorest/blob/master/autorest/azure/auth/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest/azure/cli|https://github.com/Azure/go-autorest/blob/master/autorest/azure/cli/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest/date|https://github.com/Azure/go-autorest/blob/master/autorest/date/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest|https://github.com/Azure/go-autorest/blob/master/autorest/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest/to|https://github.com/Azure/go-autorest/blob/master/autorest/to/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/autorest/validation|https://github.com/Azure/go-autorest/blob/master/autorest/validation/LICENSE|Apache-2.0 -github.com/Azure/go-autorest|https://github.com/Azure/go-autorest/blob/master/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/logger|https://github.com/Azure/go-autorest/blob/master/logger/LICENSE|Apache-2.0 -github.com/Azure/go-autorest/tracing|https://github.com/Azure/go-autorest/blob/master/tracing/LICENSE|Apache-2.0 -github.com/Azure/go-ntlmssp|https://github.com/Azure/go-ntlmssp/blob/master/LICENSE|MIT -github.com/benbjohnson/clock|https://github.com/benbjohnson/clock/blob/master/LICENSE|MIT -github.com/beorn7/perks/quantile|https://github.com/beorn7/perks/blob/master/quantile/LICENSE|MIT -github.com/bgentry/go-netrc/netrc|https://github.com/bgentry/go-netrc/blob/master/netrc/LICENSE|MIT -github.com/bgentry/speakeasy|https://github.com/bgentry/speakeasy/blob/master/LICENSE|MIT -github.com/blang/semver|https://github.com/blang/semver/blob/master/LICENSE|MIT -github.com/bmatcuk/doublestar|https://github.com/bmatcuk/doublestar/blob/master/LICENSE|MIT -github.com/bmatcuk/doublestar/v4|https://github.com/bmatcuk/doublestar/blob/master/v4/LICENSE|MIT -github.com/briandowns/spinner|https://github.com/briandowns/spinner/blob/master/LICENSE|Apache-2.0 -github.com/BurntSushi/toml|https://github.com/BurntSushi/toml/blob/master/COPYING|MIT -github.com/caarlos0/env/v6|https://github.com/caarlos0/env/blob/master/v6/LICENSE.md|MIT -github.com/cenkalti/backoff|https://github.com/cenkalti/backoff/blob/master/LICENSE|MIT -github.com/cenkalti/backoff/v3|https://github.com/cenkalti/backoff/blob/master/v3/LICENSE|MIT -github.com/cespare/xxhash/v2|https://github.com/cespare/xxhash/blob/master/v2/LICENSE.txt|MIT -github.com/chartmuseum/auth|https://github.com/chartmuseum/auth/blob/master/LICENSE|Apache-2.0 -github.com/cheggaaa/pb/v3|https://github.com/cheggaaa/pb/blob/master/v3/LICENSE|BSD-3-Clause -github.com/chrismellard/docker-credential-acr-env|https://github.com/chrismellard/docker-credential-acr-env/blob/master/LICENSE|Apache-2.0 -github.com/cockroachdb/apd/v2|https://github.com/cockroachdb/apd/blob/master/v2/LICENSE|Apache-2.0 -github.com/common-nighthawk/go-figure|https://github.com/common-nighthawk/go-figure/blob/master/LICENSE|MIT -github.com/containerd/stargz-snapshotter/estargz|https://github.com/containerd/stargz-snapshotter/blob/master/estargz/LICENSE|Apache-2.0 -github.com/containerd/typeurl|https://github.com/containerd/typeurl/blob/master/LICENSE|Apache-2.0 -github.com/containers/image/v5|https://github.com/containers/image/blob/master/v5/LICENSE|Apache-2.0 -github.com/containers/libtrust|https://github.com/containers/libtrust/blob/master/LICENSE|Apache-2.0 -github.com/containers/ocicrypt|https://github.com/containers/ocicrypt/blob/master/LICENSE|Apache-2.0 -github.com/coreos/go-semver|https://github.com/coreos/go-semver/blob/master/LICENSE|Apache-2.0 -github.com/coreos/go-semver/semver|https://github.com/coreos/go-semver/blob/master/semver/LICENSE|Apache-2.0 -github.com/coreos/go-systemd/v22|https://github.com/coreos/go-systemd/blob/master/v22/LICENSE|Apache-2.0 -github.com/coreos/go-systemd/v22/journal|https://github.com/coreos/go-systemd/blob/master/v22/journal/LICENSE|Apache-2.0 -github.com/cpuguy83/go-md2man/v2|https://github.com/cpuguy83/go-md2man/blob/master/v2/LICENSE.md|MIT -github.com/cpuguy83/go-md2man/v2/md2man|https://github.com/cpuguy83/go-md2man/blob/master/v2/md2man/LICENSE.md|MIT -github.com/cyphar/filepath-securejoin|https://github.com/cyphar/filepath-securejoin/blob/master/LICENSE|BSD-3-Clause -github.com/davecgh/go-spew/spew|https://github.com/davecgh/go-spew/blob/master/spew/LICENSE|ISC -github.com/dgryski/go-rendezvous|https://github.com/dgryski/go-rendezvous/blob/master/LICENSE|MIT -github.com/didip/tollbooth/v6|https://github.com/didip/tollbooth/blob/master/v6/LICENSE|MIT -github.com/dimchansky/utfbom|https://github.com/dimchansky/utfbom/blob/master/LICENSE|Apache-2.0 -github.com/distribution/distribution/v3|https://github.com/distribution/distribution/blob/master/v3/LICENSE|Apache-2.0 -github.com/docker/distribution|https://github.com/docker/distribution/blob/master/LICENSE|Apache-2.0 -github.com/docker/docker-credential-helpers/credentials|https://github.com/docker/docker-credential-helpers/blob/master/credentials/LICENSE|MIT -github.com/docker/go-connections|https://github.com/docker/go-connections/blob/master/LICENSE|Apache-2.0 -github.com/docker/go-metrics|https://github.com/docker/go-metrics/blob/master/LICENSE|Apache-2.0 -github.com/docker/go-units|https://github.com/docker/go-units/blob/master/LICENSE|Apache-2.0 -github.com/dustin/go-humanize|https://github.com/dustin/go-humanize/blob/master/LICENSE|MIT -github.com/emicklei/proto|https://github.com/emicklei/proto/blob/master/LICENSE|MIT -github.com/emirpasic/gods|https://github.com/emirpasic/gods/blob/master/LICENSE|BSD-2-Clause -github.com/fatih/color|https://github.com/fatih/color/blob/master/LICENSE.md|MIT -github.com/felixge/httpsnoop|https://github.com/felixge/httpsnoop/blob/master/LICENSE.txt|MIT -github.com/form3tech-oss/jwt-go|https://github.com/form3tech-oss/jwt-go/blob/master/LICENSE|MIT -github.com/fsnotify/fsnotify|https://github.com/fsnotify/fsnotify/blob/master/LICENSE|BSD-3-Clause -github.com/fullstorydev/grpcurl|https://github.com/fullstorydev/grpcurl/blob/master/LICENSE|MIT -github.com/getlantern/deepcopy|https://github.com/getlantern/deepcopy/blob/master/LICENSE|Apache-2.0 -github.com/ghodss/yaml|https://github.com/ghodss/yaml/blob/master/LICENSE|MIT -github.com/go-asn1-ber/asn1-ber|https://github.com/go-asn1-ber/asn1-ber/blob/master/LICENSE|MIT -github.com/gobwas/glob|https://github.com/gobwas/glob/blob/master/LICENSE|MIT -github.com/go-chi/chi|https://github.com/go-chi/chi/blob/master/LICENSE|MIT -github.com/gofrs/uuid|https://github.com/gofrs/uuid/blob/master/LICENSE|MIT -github.com/go-git/gcfg|https://github.com/go-git/gcfg/blob/master/LICENSE|BSD-3-Clause -github.com/go-git/go-billy/v5|https://github.com/go-git/go-billy/blob/master/v5/LICENSE|Apache-2.0 -github.com/go-git/go-git/v5|https://github.com/go-git/go-git/blob/master/v5/LICENSE|Apache-2.0 -github.com/gogo/protobuf|https://github.com/gogo/protobuf/blob/master/LICENSE|BSD-3-Clause -github.com/golang/glog|https://github.com/golang/glog/blob/master/LICENSE|Apache-2.0 -github.com/golang/groupcache|https://github.com/golang/groupcache/blob/master/LICENSE|Apache-2.0 -github.com/golang/groupcache/lru|https://github.com/golang/groupcache/blob/master/lru/LICENSE|Apache-2.0 -github.com/golang-jwt/jwt|https://github.com/golang-jwt/jwt/blob/master/LICENSE|MIT -github.com/golang-jwt/jwt/v4|https://github.com/golang-jwt/jwt/blob/master/v4/LICENSE|MIT -github.com/golang/protobuf|https://github.com/golang/protobuf/blob/master/LICENSE|BSD-3-Clause -github.com/golang/protobuf/proto|https://github.com/golang/protobuf/blob/master/proto/LICENSE|BSD-3-Clause -github.com/golang/snappy|https://github.com/golang/snappy/blob/master/LICENSE|BSD-3-Clause -github.com/go-ldap/ldap/v3|https://github.com/go-ldap/ldap/blob/master/v3/LICENSE|MIT -github.com/go-logr/logr|https://github.com/go-logr/logr/blob/master/LICENSE|Apache-2.0 -github.com/googleapis/gax-go/v2|https://github.com/googleapis/gax-go/blob/master/v2/LICENSE|BSD-3-Clause -github.com/googleapis/gnostic|https://github.com/googleapis/gnostic/blob/master/LICENSE|Apache-2.0 -github.com/google/btree|https://github.com/google/btree/blob/master/LICENSE|Apache-2.0 -github.com/google/certificate-transparency-go|https://github.com/google/certificate-transparency-go/blob/master/LICENSE|Apache-2.0 -github.com/google/go-cmp/cmp|https://github.com/google/go-cmp/blob/master/cmp/LICENSE|BSD-3-Clause -github.com/google/gofuzz|https://github.com/google/gofuzz/blob/master/LICENSE|Apache-2.0 -github.com/google/go-querystring/query|https://github.com/google/go-querystring/blob/master/query/LICENSE|BSD-3-Clause -github.com/google/trillian|https://github.com/google/trillian/blob/master/LICENSE|Apache-2.0 -github.com/google/uuid|https://github.com/google/uuid/blob/master/LICENSE|BSD-3-Clause -github.com/google/wire|https://github.com/google/wire/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/analysis|https://github.com/go-openapi/analysis/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/errors|https://github.com/go-openapi/errors/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/jsonpointer|https://github.com/go-openapi/jsonpointer/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/jsonreference|https://github.com/go-openapi/jsonreference/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/loads|https://github.com/go-openapi/loads/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/runtime|https://github.com/go-openapi/runtime/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/spec|https://github.com/go-openapi/spec/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/strfmt|https://github.com/go-openapi/strfmt/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/swag|https://github.com/go-openapi/swag/blob/master/LICENSE|Apache-2.0 -github.com/go-openapi/validate|https://github.com/go-openapi/validate/blob/master/LICENSE|Apache-2.0 -github.com/go-pkgz/expirable-cache|https://github.com/go-pkgz/expirable-cache/blob/master/LICENSE|MIT -github.com/go-playground/locales|https://github.com/go-playground/locales/blob/master/LICENSE|MIT -github.com/go-playground/universal-translator|https://github.com/go-playground/universal-translator/blob/master/LICENSE|MIT -github.com/go-playground/validator/v10|https://github.com/go-playground/validator/blob/master/v10/LICENSE|MIT -github.com/go-redis/redis/v8|https://github.com/go-redis/redis/blob/master/v8/LICENSE|BSD-2-Clause -github.com/go-restruct/restruct|https://github.com/go-restruct/restruct/blob/master/LICENSE.md|ISC -github.com/gorilla/handlers|https://github.com/gorilla/handlers/blob/master/LICENSE|BSD-2-Clause -github.com/gorilla/mux|https://github.com/gorilla/mux/blob/master/LICENSE|BSD-3-Clause -github.com/gorilla/websocket|https://github.com/gorilla/websocket/blob/master/LICENSE|BSD-2-Clause -github.com/go-stack/stack|https://github.com/go-stack/stack/blob/master/LICENSE.md|MIT -github.com/grpc-ecosystem/go-grpc-middleware|https://github.com/grpc-ecosystem/go-grpc-middleware/blob/master/LICENSE|Apache-2.0 -github.com/grpc-ecosystem/go-grpc-prometheus|https://github.com/grpc-ecosystem/go-grpc-prometheus/blob/master/LICENSE|Apache-2.0 -github.com/grpc-ecosystem/grpc-gateway|https://github.com/grpc-ecosystem/grpc-gateway/blob/master/LICENSE.txt|BSD-3-Clause -github.com/hashicorp/errwrap|https://github.com/hashicorp/errwrap/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-cleanhttp|https://github.com/hashicorp/go-cleanhttp/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-getter|https://github.com/hashicorp/go-getter/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-hclog|https://github.com/hashicorp/go-hclog/blob/master/LICENSE|MIT -github.com/hashicorp/go-immutable-radix|https://github.com/hashicorp/go-immutable-radix/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/golang-lru|https://github.com/hashicorp/golang-lru/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/golang-lru/simplelru|https://github.com/hashicorp/golang-lru/blob/master/simplelru/LICENSE|MPL-2.0 -github.com/hashicorp/go-multierror|https://github.com/hashicorp/go-multierror/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-plugin|https://github.com/hashicorp/go-plugin/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-retryablehttp|https://github.com/hashicorp/go-retryablehttp/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-rootcerts|https://github.com/hashicorp/go-rootcerts/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-safetemp|https://github.com/hashicorp/go-safetemp/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-secure-stdlib/mlock|https://github.com/hashicorp/go-secure-stdlib/blob/master/mlock/LICENSE|MPL-2.0 -github.com/hashicorp/go-secure-stdlib/parseutil|https://github.com/hashicorp/go-secure-stdlib/blob/master/parseutil/LICENSE|MPL-2.0 -github.com/hashicorp/go-secure-stdlib/strutil|https://github.com/hashicorp/go-secure-stdlib/blob/master/strutil/LICENSE|MPL-2.0 -github.com/hashicorp/go-sockaddr|https://github.com/hashicorp/go-sockaddr/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-uuid|https://github.com/hashicorp/go-uuid/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/go-version|https://github.com/hashicorp/go-version/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/hcl|https://github.com/hashicorp/hcl/blob/master/LICENSE|MPL-2.0 -github.com/hashicorp/hcl/v2|https://github.com/hashicorp/hcl/blob/master/v2/LICENSE|MPL-2.0 -github.com/hashicorp/vault/api|https://github.com/hashicorp/vault/blob/master/api/LICENSE|MPL-2.0 -github.com/hashicorp/vault/sdk|https://github.com/hashicorp/vault/blob/master/sdk/LICENSE|MPL-2.0 -github.com/hashicorp/yamux|https://github.com/hashicorp/yamux/blob/master/LICENSE|MPL-2.0 -github.com/huandu/xstrings|https://github.com/huandu/xstrings/blob/master/LICENSE|MIT -github.com/imdario/mergo|https://github.com/imdario/mergo/blob/master/LICENSE|BSD-3-Clause -github.com/inconshreveable/mousetrap|https://github.com/inconshreveable/mousetrap/blob/master/LICENSE|Apache-2.0 -github.com/in-toto/in-toto-golang|https://github.com/in-toto/in-toto-golang/blob/master/LICENSE|Apache-2.0 -github.com/jbenet/go-context|https://github.com/jbenet/go-context/blob/master/LICENSE|MIT -github.com/jbenet/go-context/io|https://github.com/jbenet/go-context/blob/master/io/LICENSE|MIT -github.com/jedisct1/go-minisign|https://github.com/jedisct1/go-minisign/blob/master/LICENSE|MIT -github.com/jhump/protoreflect|https://github.com/jhump/protoreflect/blob/master/LICENSE|Apache-2.0 -github.com/jmespath/go-jmespath|https://github.com/jmespath/go-jmespath/blob/master/LICENSE|Apache-2.0 -github.com/jonboulle/clockwork|https://github.com/jonboulle/clockwork/blob/master/LICENSE|Apache-2.0 -github.com/josharian/intern|https://github.com/josharian/intern/blob/master/license.md|MIT -github.com/json-iterator/go|https://github.com/json-iterator/go/blob/master/LICENSE|MIT -github.com/jtolds/gls|https://github.com/jtolds/gls/blob/master/LICENSE|MIT -github.com/kevinburke/ssh_config|https://github.com/kevinburke/ssh_config/blob/master/LICENSE|MIT -github.com/klauspost/compress/flate|https://github.com/klauspost/compress/blob/master/flate/LICENSE|Apache-2.0 -github.com/klauspost/compress|https://github.com/klauspost/compress/blob/master/LICENSE|Apache-2.0 -github.com/klauspost/compress/internal/snapref|https://github.com/klauspost/compress/blob/master/internal/snapref/LICENSE|BSD-3-Clause -github.com/klauspost/compress/zstd/internal/xxhash|https://github.com/klauspost/compress/blob/master/zstd/internal/xxhash/LICENSE.txt|MIT -github.com/klauspost/cpuid/v2|https://github.com/klauspost/cpuid/blob/master/v2/LICENSE|MIT -github.com/klauspost/pgzip|https://github.com/klauspost/pgzip/blob/master/LICENSE|MIT -github.com/knqyf263/go-apk-version|https://github.com/knqyf263/go-apk-version/blob/master/LICENSE|Apache-2.0 -github.com/knqyf263/go-deb-version|https://github.com/knqyf263/go-deb-version/blob/master/LICENSE|MIT -github.com/knqyf263/go-rpm-version|https://github.com/knqyf263/go-rpm-version/blob/master/LICENSE|MIT -github.com/knqyf263/nested|https://github.com/knqyf263/nested/blob/master/LICENSE|MIT -github.com/KyleBanks/depth|https://github.com/KyleBanks/depth/blob/master/LICENSE|MIT -github.com/leodido/go-urn|https://github.com/leodido/go-urn/blob/master/LICENSE|MIT -github.com/magiconair/properties|https://github.com/magiconair/properties/blob/master/LICENSE.md|BSD-2-Clause -github.com/mailru/easyjson|https://github.com/mailru/easyjson/blob/master/LICENSE|MIT -github.com/masahiro331/go-mvn-version|https://github.com/masahiro331/go-mvn-version/blob/master/LICENCE|Apache-2.0 -github.com/Masterminds/goutils|https://github.com/Masterminds/goutils/blob/master/LICENSE.txt|Apache-2.0 -github.com/Masterminds/semver|https://github.com/Masterminds/semver/blob/master/LICENSE.txt|MIT -github.com/Masterminds/sprig|https://github.com/Masterminds/sprig/blob/master/LICENSE.txt|MIT -github.com/mattn/go-colorable|https://github.com/mattn/go-colorable/blob/master/LICENSE|MIT -github.com/mattn/go-isatty|https://github.com/mattn/go-isatty/blob/master/LICENSE|MIT -github.com/mattn/go-runewidth|https://github.com/mattn/go-runewidth/blob/master/LICENSE|MIT -github.com/matttproud/golang_protobuf_extensions/pbutil|https://github.com/matttproud/golang_protobuf_extensions/blob/master/pbutil/LICENSE|Apache-2.0 -github.com/Microsoft/go-winio|https://github.com/Microsoft/go-winio/blob/master/LICENSE|MIT -github.com/miekg/pkcs11|https://github.com/miekg/pkcs11/blob/master/LICENSE|BSD-3-Clause -github.com/minio/sha256-simd|https://github.com/minio/sha256-simd/blob/master/LICENSE|Apache-2.0 -github.com/mitchellh/copystructure|https://github.com/mitchellh/copystructure/blob/master/LICENSE|MIT -github.com/mitchellh/go-homedir|https://github.com/mitchellh/go-homedir/blob/master/LICENSE|MIT -github.com/mitchellh/go-testing-interface|https://github.com/mitchellh/go-testing-interface/blob/master/LICENSE|MIT -github.com/mitchellh/go-wordwrap|https://github.com/mitchellh/go-wordwrap/blob/master/LICENSE.md|MIT -github.com/mitchellh/mapstructure|https://github.com/mitchellh/mapstructure/blob/master/LICENSE|MIT -github.com/mitchellh/reflectwalk|https://github.com/mitchellh/reflectwalk/blob/master/LICENSE|MIT -github.com/moby/buildkit|https://github.com/moby/buildkit/blob/master/LICENSE|Apache-2.0 -github.com/moby/sys/mountinfo|https://github.com/moby/sys/blob/master/mountinfo/LICENSE|Apache-2.0 -github.com/modern-go/concurrent|https://github.com/modern-go/concurrent/blob/master/LICENSE|Apache-2.0 -github.com/modern-go/reflect2|https://github.com/modern-go/reflect2/blob/master/LICENSE|Apache-2.0 -github.com/mpvl/unique|https://github.com/mpvl/unique/blob/master/LICENSE|MIT -github.com/mtrmac/gpgme|https://github.com/mtrmac/gpgme/blob/master/LICENSE|BSD-3-Clause -github.com/nmcclain/asn1-ber|https://github.com/nmcclain/asn1-ber/blob/master/LICENSE|BSD-3-Clause -github.com/nmcclain/ldap|https://github.com/nmcclain/ldap/blob/master/LICENSE|BSD-3-Clause -github.com/notaryproject/notation-go-lib|https://github.com/notaryproject/notation-go-lib/blob/master/LICENSE|Apache-2.0 -github.com/oklog/run|https://github.com/oklog/run/blob/master/LICENSE|Apache-2.0 -github.com/oklog/ulid|https://github.com/oklog/ulid/blob/master/LICENSE|Apache-2.0 -github.com/olekukonko/tablewriter|https://github.com/olekukonko/tablewriter/blob/master/LICENSE.md|MIT -github.com/OneOfOne/xxhash|https://github.com/OneOfOne/xxhash/blob/master/LICENSE|Apache-2.0 -github.com/opencontainers/go-digest|https://github.com/opencontainers/go-digest/blob/master/LICENSE|Apache-2.0 -github.com/opencontainers/image-spec/specs-go|https://github.com/opencontainers/image-spec/blob/master/specs-go/LICENSE|Apache-2.0 -github.com/opencontainers/runc/libcontainer/user|https://github.com/opencontainers/runc/blob/master/libcontainer/user/LICENSE|Apache-2.0 -github.com/opencontainers/runtime-spec/specs-go|https://github.com/opencontainers/runtime-spec/blob/master/specs-go/LICENSE|Apache-2.0 -github.com/opencontainers/umoci|https://github.com/opencontainers/umoci/blob/master/COPYING|Apache-2.0 -github.com/opencontainers/umoci/third_party/shared|https://github.com/opencontainers/umoci/blob/master/third_party/shared/COPYING|Apache-2.0 -github.com/opentracing/opentracing-go|https://github.com/opentracing/opentracing-go/blob/master/LICENSE|Apache-2.0 -github.com/PaesslerAG/gval|https://github.com/PaesslerAG/gval/blob/master/LICENSE|BSD-3-Clause -github.com/PaesslerAG/jsonpath|https://github.com/PaesslerAG/jsonpath/blob/master/LICENSE|BSD-3-Clause -github.com/pelletier/go-toml|https://github.com/pelletier/go-toml/blob/master/LICENSE|Apache-2.0 -github.com/phayes/freeport|https://github.com/phayes/freeport/blob/master/LICENSE.md|BSD-3-Clause -github.com/pierrec/lz4|https://github.com/pierrec/lz4/blob/master/LICENSE|BSD-3-Clause -github.com/pkg/errors|https://github.com/pkg/errors/blob/master/LICENSE|BSD-2-Clause -github.com/pmezard/go-difflib/difflib|https://github.com/pmezard/go-difflib/blob/master/difflib/LICENSE|BSD-3-Clause -github.com/prometheus/client_golang/prometheus|https://github.com/prometheus/client_golang/blob/master/prometheus/LICENSE|Apache-2.0 -github.com/prometheus/client_model/go|https://github.com/prometheus/client_model/blob/master/go/LICENSE|Apache-2.0 -github.com/prometheus/common|https://github.com/prometheus/common/blob/master/LICENSE|Apache-2.0 -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg|https://github.com/prometheus/common/blob/master/internal/bitbucket.org/ww/goautoneg/README.txt|BSD-3-Clause -github.com/prometheus/procfs|https://github.com/prometheus/procfs/blob/master/LICENSE|Apache-2.0 -github.com/ProtonMail/go-crypto|https://github.com/ProtonMail/go-crypto/blob/master/LICENSE|BSD-3-Clause -github.com/PuerkitoBio/purell|https://github.com/PuerkitoBio/purell/blob/master/LICENSE|BSD-3-Clause -github.com/PuerkitoBio/urlesc|https://github.com/PuerkitoBio/urlesc/blob/master/LICENSE|BSD-3-Clause -github.com/rcrowley/go-metrics|https://github.com/rcrowley/go-metrics/blob/master/LICENSE|BSD-2-Clause-FreeBSD -github.com/ReneKroon/ttlcache/v2|https://github.com/ReneKroon/ttlcache/blob/master/v2/LICENSE|MIT -github.com/rivo/uniseg|https://github.com/rivo/uniseg/blob/master/LICENSE.txt|MIT +cloud.google.com/go/compute/metadata|https://github.com/googleapis/google-cloud-go/blob/compute/metadata/v0.2.3/compute/metadata/LICENSE|Apache-2.0 +cloud.google.com/go/iam|https://github.com/googleapis/google-cloud-go/blob/iam/v1.1.1/iam/LICENSE|Apache-2.0 +cloud.google.com/go/internal|https://github.com/googleapis/google-cloud-go/blob/v0.110.6/LICENSE|Apache-2.0 +cloud.google.com/go/storage|https://github.com/googleapis/google-cloud-go/blob/storage/v1.30.1/storage/LICENSE|Apache-2.0 +cloud.google.com/go|https://github.com/googleapis/google-cloud-go/blob/v0.110.6/LICENSE|Apache-2.0 +filippo.io/edwards25519|https://github.com/FiloSottile/edwards25519/blob/v1.0.0/LICENSE|BSD-3-Clause +github.com/99designs/gqlgen|https://github.com/99designs/gqlgen/blob/v0.17.37/LICENSE|MIT +github.com/AdaLogics/go-fuzz-headers|https://github.com/AdaLogics/go-fuzz-headers/blob/ced1acdcaa24/LICENSE|Apache-2.0 +github.com/AdamKorcz/go-118-fuzz-build|https://github.com/AdamKorcz/go-118-fuzz-build/blob/8075edf89bb0/LICENSE|Apache-2.0 +github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper|https://github.com/AliyunContainerService/ack-ram-tool/blob/pkg/credentials/alibabacloudsdkgo/helper/v0.2.0/pkg/credentials/alibabacloudsdkgo/helper/LICENSE|Apache-2.0 +github.com/Azure/azure-sdk-for-go/sdk/azcore|https://github.com/Azure/azure-sdk-for-go/blob/sdk/azcore/v1.7.1/sdk/azcore/LICENSE.txt|MIT +github.com/Azure/azure-sdk-for-go/sdk/azidentity|https://github.com/Azure/azure-sdk-for-go/blob/sdk/azidentity/v1.3.1/sdk/azidentity/LICENSE.txt|MIT +github.com/Azure/azure-sdk-for-go/sdk/internal|https://github.com/Azure/azure-sdk-for-go/blob/sdk/internal/v1.3.0/sdk/internal/LICENSE.txt|MIT +github.com/Azure/azure-sdk-for-go|https://github.com/Azure/azure-sdk-for-go/blob/v68.0.0/LICENSE.txt|MIT +github.com/Azure/go-ansiterm|https://github.com/Azure/go-ansiterm/blob/306776ec8161/LICENSE|MIT +github.com/Azure/go-autorest/autorest/adal|https://github.com/Azure/go-autorest/blob/autorest/adal/v0.9.23/autorest/adal/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/autorest/azure/auth|https://github.com/Azure/go-autorest/blob/autorest/azure/auth/v0.5.12/autorest/azure/auth/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/autorest/azure/cli|https://github.com/Azure/go-autorest/blob/autorest/azure/cli/v0.4.6/autorest/azure/cli/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/autorest/date|https://github.com/Azure/go-autorest/blob/autorest/date/v0.3.0/autorest/date/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/autorest|https://github.com/Azure/go-autorest/blob/autorest/v0.11.29/autorest/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/logger|https://github.com/Azure/go-autorest/blob/logger/v0.2.1/logger/LICENSE|Apache-2.0 +github.com/Azure/go-autorest/tracing|https://github.com/Azure/go-autorest/blob/tracing/v0.6.0/tracing/LICENSE|Apache-2.0 +github.com/Azure/go-autorest|https://github.com/Azure/go-autorest/blob/v14.2.0/LICENSE|Apache-2.0 +github.com/Azure/go-ntlmssp|https://github.com/Azure/go-ntlmssp/blob/754e69321358/LICENSE|MIT +github.com/AzureAD/microsoft-authentication-library-for-go/apps|https://github.com/AzureAD/microsoft-authentication-library-for-go/blob/v1.1.1/LICENSE|MIT +github.com/BurntSushi/toml|https://github.com/BurntSushi/toml/blob/v1.3.2/COPYING|MIT +github.com/CycloneDX/cyclonedx-go|https://github.com/CycloneDX/cyclonedx-go/blob/v0.7.2/LICENSE|Apache-2.0 +github.com/DataDog/datadog-agent/pkg/obfuscate|https://github.com/DataDog/datadog-agent/blob/pkg/obfuscate/v0.45.0-rc.1/pkg/obfuscate/LICENSE|Apache-2.0 +github.com/DataDog/datadog-agent/pkg/remoteconfig/state|https://github.com/DataDog/datadog-agent/blob/pkg/remoteconfig/state/v0.46.0-rc.4/pkg/remoteconfig/state/LICENSE|Apache-2.0 +github.com/DataDog/datadog-go/v5/statsd|https://github.com/DataDog/datadog-go/blob/v5.3.0/LICENSE.txt|MIT +github.com/DataDog/go-libddwaf|https://github.com/DataDog/go-libddwaf/blob/v1.4.1/LICENSE|Apache-2.0 +github.com/DataDog/go-tuf|https://github.com/DataDog/go-tuf/blob/v0.3.0--fix-localmeta-fork/LICENSE|BSD-3-Clause +github.com/KyleBanks/depth|https://github.com/KyleBanks/depth/blob/v1.2.1/LICENSE|MIT +github.com/MakeNowJust/heredoc|https://github.com/MakeNowJust/heredoc/blob/v1.0.0/LICENSE|MIT +github.com/Masterminds/goutils|https://github.com/Masterminds/goutils/blob/v1.1.1/LICENSE.txt|Apache-2.0 +github.com/Masterminds/semver/v3|https://github.com/Masterminds/semver/blob/v3.2.1/LICENSE.txt|MIT +github.com/Masterminds/semver|https://github.com/Masterminds/semver/blob/v1.5.0/LICENSE.txt|MIT +github.com/Masterminds/sprig/v3|https://github.com/Masterminds/sprig/blob/v3.2.3/LICENSE.txt|MIT +github.com/Masterminds/squirrel|https://github.com/Masterminds/squirrel/blob/v1.5.4/LICENSE|MIT +github.com/Microsoft/go-winio|https://github.com/Microsoft/go-winio/blob/v0.6.1/LICENSE|MIT +github.com/Microsoft/hcsshim|https://github.com/Microsoft/hcsshim/blob/v0.12.0-rc.0/LICENSE|MIT +github.com/OneOfOne/xxhash|https://github.com/OneOfOne/xxhash/blob/v1.2.8/LICENSE|Apache-2.0 +github.com/ProtonMail/go-crypto|https://github.com/ProtonMail/go-crypto/blob/7afd39499903/LICENSE|BSD-3-Clause +github.com/ThalesIgnite/crypto11|https://github.com/ThalesIgnite/crypto11/blob/v1.2.5/LICENCE.txt|MIT +github.com/VividCortex/ewma|https://github.com/VividCortex/ewma/blob/v1.2.0/LICENSE|MIT +github.com/acarl005/stripansi|https://github.com/acarl005/stripansi/blob/5a71ef0e047d/LICENSE|MIT +github.com/acomagu/bufpipe|https://github.com/acomagu/bufpipe/blob/v1.0.4/LICENSE|MIT +github.com/agext/levenshtein|https://github.com/agext/levenshtein/blob/v1.2.3/LICENSE|Apache-2.0 +github.com/agnivade/levenshtein|https://github.com/agnivade/levenshtein/blob/v1.1.1/License.txt|MIT +github.com/alecthomas/chroma|https://github.com/alecthomas/chroma/blob/v0.10.0/COPYING|MIT +github.com/alibabacloud-go/debug/debug|https://github.com/alibabacloud-go/debug/blob/9472017b5c68/LICENSE|Apache-2.0 +github.com/alibabacloud-go/debug|https://github.com/alibabacloud-go/debug/blob/9472017b5c68/LICENSE|Apache-2.0 +github.com/alibabacloud-go/tea|https://github.com/alibabacloud-go/tea/blob/v1.1.18/LICENSE|Apache-2.0 +github.com/aliyun/credentials-go/credentials|https://github.com/aliyun/credentials-go/blob/v1.2.3/LICENSE|Apache-2.0 +github.com/aliyun/credentials-go|https://github.com/aliyun/credentials-go/blob/v1.2.3/LICENSE|Apache-2.0 +github.com/anchore/go-struct-converter|https://github.com/anchore/go-struct-converter/blob/c68fdcfa2092/LICENSE|Apache-2.0 +github.com/apex/log|https://github.com/apex/log/blob/v1.9.0/LICENSE|MIT +github.com/apparentlymart/go-textseg/v13/textseg|https://github.com/apparentlymart/go-textseg/blob/v13.0.0/LICENSE|MIT +github.com/aquasecurity/go-gem-version|https://github.com/aquasecurity/go-gem-version/blob/8eed6fe000ce/LICENSE|Apache-2.0 +github.com/aquasecurity/go-pep440-version|https://github.com/aquasecurity/go-pep440-version/blob/22b2f8951d46/LICENSE|Apache-2.0 +github.com/aquasecurity/go-version/pkg/part|https://github.com/aquasecurity/go-version/blob/637058cfe492/LICENSE|Apache-2.0 +github.com/aquasecurity/table|https://github.com/aquasecurity/table/blob/v1.8.0/LICENSE|MIT +github.com/aquasecurity/tml|https://github.com/aquasecurity/tml/blob/v0.6.1/LICENSE|Unlicense +github.com/asaskevich/govalidator|https://github.com/asaskevich/govalidator/blob/a9d515a09cc2/LICENSE|MIT +github.com/aws/aws-sdk-go-v2/config|https://github.com/aws/aws-sdk-go-v2/blob/config/v1.18.39/config/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/credentials|https://github.com/aws/aws-sdk-go-v2/blob/credentials/v1.13.37/credentials/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue|https://github.com/aws/aws-sdk-go-v2/blob/feature/dynamodb/attributevalue/v1.10.39/feature/dynamodb/attributevalue/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/feature/ec2/imds|https://github.com/aws/aws-sdk-go-v2/blob/feature/ec2/imds/v1.13.11/feature/ec2/imds/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/configsources|https://github.com/aws/aws-sdk-go-v2/blob/internal/configsources/v1.1.41/internal/configsources/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2|https://github.com/aws/aws-sdk-go-v2/blob/internal/endpoints/v2.4.35/internal/endpoints/v2/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/ini|https://github.com/aws/aws-sdk-go-v2/blob/internal/ini/v1.3.42/internal/ini/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/internal/sync/singleflight|https://github.com/aws/aws-sdk-go-v2/blob/v1.21.0/internal/sync/singleflight/LICENSE|BSD-3-Clause +github.com/aws/aws-sdk-go-v2/service/dynamodb/types|https://github.com/aws/aws-sdk-go-v2/blob/service/dynamodb/v1.21.5/service/dynamodb/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams/types|https://github.com/aws/aws-sdk-go-v2/blob/service/dynamodbstreams/v1.15.5/service/dynamodbstreams/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams|https://github.com/aws/aws-sdk-go-v2/blob/service/dynamodbstreams/v1.15.5/service/dynamodbstreams/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/dynamodb|https://github.com/aws/aws-sdk-go-v2/blob/service/dynamodb/v1.21.5/service/dynamodb/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ebs|https://github.com/aws/aws-sdk-go-v2/blob/service/ebs/v1.18.1/service/ebs/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ec2|https://github.com/aws/aws-sdk-go-v2/blob/service/ec2/v1.98.0/service/ec2/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ecrpublic|https://github.com/aws/aws-sdk-go-v2/blob/service/ecrpublic/v1.12.0/service/ecrpublic/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ecr|https://github.com/aws/aws-sdk-go-v2/blob/service/ecr/v1.17.18/service/ecr/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding|https://github.com/aws/aws-sdk-go-v2/blob/service/internal/accept-encoding/v1.9.14/service/internal/accept-encoding/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery|https://github.com/aws/aws-sdk-go-v2/blob/service/internal/endpoint-discovery/v1.7.35/service/internal/endpoint-discovery/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url|https://github.com/aws/aws-sdk-go-v2/blob/service/internal/presigned-url/v1.9.35/service/internal/presigned-url/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/secretsmanager|https://github.com/aws/aws-sdk-go-v2/blob/service/secretsmanager/v1.21.3/service/secretsmanager/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/ssooidc|https://github.com/aws/aws-sdk-go-v2/blob/service/ssooidc/v1.15.6/service/ssooidc/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/sso|https://github.com/aws/aws-sdk-go-v2/blob/service/sso/v1.13.6/service/sso/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2/service/sts|https://github.com/aws/aws-sdk-go-v2/blob/service/sts/v1.21.5/service/sts/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go-v2|https://github.com/aws/aws-sdk-go-v2/blob/v1.21.0/LICENSE.txt|Apache-2.0 +github.com/aws/aws-sdk-go/internal/sync/singleflight|https://github.com/aws/aws-sdk-go/blob/v1.45.7/internal/sync/singleflight/LICENSE|BSD-3-Clause +github.com/aws/aws-sdk-go|https://github.com/aws/aws-sdk-go/blob/v1.45.7/LICENSE.txt|Apache-2.0 +github.com/aws/smithy-go/internal/sync/singleflight|https://github.com/aws/smithy-go/blob/v1.14.2/internal/sync/singleflight/LICENSE|BSD-3-Clause +github.com/aws/smithy-go|https://github.com/aws/smithy-go/blob/v1.14.2/LICENSE|Apache-2.0 +github.com/awslabs/amazon-ecr-credential-helper/ecr-login|https://github.com/awslabs/amazon-ecr-credential-helper/blob/396b2034c795/ecr-login/LICENSE|Apache-2.0 +github.com/beorn7/perks/quantile|https://github.com/beorn7/perks/blob/v1.0.1/LICENSE|MIT +github.com/bgentry/go-netrc/netrc|https://github.com/bgentry/go-netrc/blob/9fd32a8b3d3d/LICENSE|MIT +github.com/blang/semver|https://github.com/blang/semver/blob/v3.5.1/LICENSE|MIT +github.com/bmatcuk/doublestar/v4|https://github.com/bmatcuk/doublestar/blob/v4.6.0/LICENSE|MIT +github.com/briandowns/spinner|https://github.com/briandowns/spinner/blob/v1.23.0/LICENSE|Apache-2.0 +github.com/buildkite/interpolate|https://github.com/buildkite/interpolate/blob/07f35b4ae251/LICENSE.txt|MIT +github.com/cenkalti/backoff|https://github.com/cenkalti/backoff/blob/v2.2.1/LICENSE|MIT +github.com/cespare/xxhash/v2|https://github.com/cespare/xxhash/blob/v2.2.0/LICENSE.txt|MIT +github.com/chai2010/gettext-go|https://github.com/chai2010/gettext-go/blob/v1.0.2/LICENSE|BSD-3-Clause +github.com/chartmuseum/auth|https://github.com/chartmuseum/auth/blob/v0.5.0/LICENSE|Apache-2.0 +github.com/cheggaaa/pb/v3|https://github.com/cheggaaa/pb/blob/v3.1.4/v3/LICENSE|BSD-3-Clause +github.com/chrismellard/docker-credential-acr-env|https://github.com/chrismellard/docker-credential-acr-env/blob/fe33c00cee21/LICENSE|Apache-2.0 +github.com/clbanning/mxj/v2|https://github.com/clbanning/mxj/blob/v2.5.6/LICENSE|MIT +github.com/cloudflare/circl|https://github.com/cloudflare/circl/blob/v1.3.3/LICENSE|BSD-3-Clause +github.com/cockroachdb/apd/v3|https://github.com/cockroachdb/apd/blob/v3.2.0/LICENSE|Apache-2.0 +github.com/common-nighthawk/go-figure|https://github.com/common-nighthawk/go-figure/blob/734e95fb86be/LICENSE|MIT +github.com/containerd/cgroups/v3|https://github.com/containerd/cgroups/blob/v3.0.2/LICENSE|Apache-2.0 +github.com/containerd/containerd|https://github.com/containerd/containerd/blob/v1.7.6/LICENSE|Apache-2.0 +github.com/containerd/continuity|https://github.com/containerd/continuity/blob/v0.4.2/LICENSE|Apache-2.0 +github.com/containerd/fifo|https://github.com/containerd/fifo/blob/v1.1.0/LICENSE|Apache-2.0 +github.com/containerd/stargz-snapshotter/estargz|https://github.com/containerd/stargz-snapshotter/blob/estargz/v0.14.3/estargz/LICENSE|Apache-2.0 +github.com/containerd/ttrpc|https://github.com/containerd/ttrpc/blob/v1.2.2/LICENSE|Apache-2.0 +github.com/containerd/typeurl/v2|https://github.com/containerd/typeurl/blob/v2.1.1/LICENSE|Apache-2.0 +github.com/containerd/typeurl|https://github.com/containerd/typeurl/blob/v1.0.2/LICENSE|Apache-2.0 +github.com/containers/image/v5|https://github.com/containers/image/blob/v5.28.0/LICENSE|Apache-2.0 +github.com/containers/libtrust|https://github.com/containers/libtrust/blob/c1716e8a8d01/LICENSE|Apache-2.0 +github.com/containers/ocicrypt|https://github.com/containers/ocicrypt/blob/v1.1.8/LICENSE|Apache-2.0 +github.com/cpuguy83/go-md2man/v2/md2man|https://github.com/cpuguy83/go-md2man/blob/v2.0.2/LICENSE.md|MIT +github.com/cpuguy83/go-md2man/v2|https://github.com/cpuguy83/go-md2man/blob/v2.0.2/LICENSE.md|MIT +github.com/cyphar/filepath-securejoin|https://github.com/cyphar/filepath-securejoin/blob/v0.2.4/LICENSE|BSD-3-Clause +github.com/davecgh/go-spew/spew|https://github.com/davecgh/go-spew/blob/v1.1.1/LICENSE|ISC +github.com/decred/dcrd/dcrec/secp256k1/v4|https://github.com/decred/dcrd/blob/dcrec/secp256k1/v4.2.0/dcrec/secp256k1/LICENSE|ISC +github.com/dgryski/go-rendezvous|https://github.com/dgryski/go-rendezvous/blob/9f7001d12a5f/LICENSE|MIT +github.com/didip/tollbooth/v6|https://github.com/didip/tollbooth/blob/v6.1.2/LICENSE|MIT +github.com/digitorus/pkcs7|https://github.com/digitorus/pkcs7/blob/3a137a874352/LICENSE|MIT +github.com/digitorus/timestamp|https://github.com/digitorus/timestamp/blob/d1ad5ca9624c/LICENSE|BSD-2-Clause +github.com/dimchansky/utfbom|https://github.com/dimchansky/utfbom/blob/v1.1.1/LICENSE|Apache-2.0 +github.com/dlclark/regexp2|https://github.com/dlclark/regexp2/blob/v1.4.0/LICENSE|MIT +github.com/docker/distribution|https://github.com/docker/distribution/blob/v2.8.2/LICENSE|Apache-2.0 +github.com/docker/docker-credential-helpers/credentials|https://github.com/docker/docker-credential-helpers/blob/v0.8.0/LICENSE|MIT +github.com/docker/go-connections|https://github.com/docker/go-connections/blob/v0.4.0/LICENSE|Apache-2.0 +github.com/docker/go-events|https://github.com/docker/go-events/blob/e31b211e4f1c/LICENSE|Apache-2.0 +github.com/docker/go-metrics|https://github.com/docker/go-metrics/blob/v0.0.1/LICENSE|Apache-2.0 +github.com/docker/go-units|https://github.com/docker/go-units/blob/v0.5.0/LICENSE|Apache-2.0 +github.com/dustin/go-humanize|https://github.com/dustin/go-humanize/blob/v1.0.1/LICENSE|MIT +github.com/ebitengine/purego|https://github.com/ebitengine/purego/blob/ee8dcecc618f/LICENSE|Apache-2.0 +github.com/emicklei/go-restful/v3|https://github.com/emicklei/go-restful/blob/v3.10.2/LICENSE|MIT +github.com/emicklei/proto|https://github.com/emicklei/proto/blob/v1.10.0/LICENSE|MIT +github.com/emirpasic/gods|https://github.com/emirpasic/gods/blob/v1.18.1/LICENSE|BSD-2-Clause +github.com/evanphx/json-patch|https://github.com/evanphx/json-patch/blob/v5.6.0/LICENSE|BSD-3-Clause +github.com/exponent-io/jsonpath|https://github.com/exponent-io/jsonpath/blob/d6023ce2651d/LICENSE|MIT +github.com/fatih/color|https://github.com/fatih/color/blob/v1.15.0/LICENSE.md|MIT +github.com/felixge/httpsnoop|https://github.com/felixge/httpsnoop/blob/v1.0.3/LICENSE.txt|MIT +github.com/fsnotify/fsnotify|https://github.com/fsnotify/fsnotify/blob/v1.6.0/LICENSE|BSD-3-Clause +github.com/gabriel-vasile/mimetype|https://github.com/gabriel-vasile/mimetype/blob/v1.4.2/LICENSE|MIT +github.com/ghodss/yaml|https://github.com/ghodss/yaml/blob/v1.0.0/LICENSE|MIT +github.com/go-asn1-ber/asn1-ber|https://github.com/go-asn1-ber/asn1-ber/blob/v1.5.5/LICENSE|MIT +github.com/go-chi/chi|https://github.com/go-chi/chi/blob/v4.1.2/LICENSE|MIT +github.com/go-errors/errors|https://github.com/go-errors/errors/blob/v1.4.2/LICENSE.MIT|MIT +github.com/go-git/gcfg|https://github.com/go-git/gcfg/blob/3a3c6141e376/LICENSE|BSD-3-Clause +github.com/go-git/go-billy/v5|https://github.com/go-git/go-billy/blob/v5.4.1/LICENSE|Apache-2.0 +github.com/go-git/go-git/v5|https://github.com/go-git/go-git/blob/v5.7.0/LICENSE|Apache-2.0 +github.com/go-gorp/gorp/v3|https://github.com/go-gorp/gorp/blob/v3.0.5/LICENSE|MIT +github.com/go-ini/ini|https://github.com/go-ini/ini/blob/v1.67.0/LICENSE|Apache-2.0 +github.com/go-jose/go-jose/v3/json|https://github.com/go-jose/go-jose/blob/v3.0.0/json/LICENSE|BSD-3-Clause +github.com/go-jose/go-jose/v3|https://github.com/go-jose/go-jose/blob/v3.0.0/LICENSE|Apache-2.0 +github.com/go-ldap/ldap/v3|https://github.com/go-ldap/ldap/blob/v3.4.6/v3/LICENSE|MIT +github.com/go-logr/logr|https://github.com/go-logr/logr/blob/v1.2.4/LICENSE|Apache-2.0 +github.com/go-logr/stdr|https://github.com/go-logr/stdr/blob/v1.2.2/LICENSE|Apache-2.0 +github.com/go-openapi/analysis|https://github.com/go-openapi/analysis/blob/v0.21.4/LICENSE|Apache-2.0 +github.com/go-openapi/errors|https://github.com/go-openapi/errors/blob/v0.20.4/LICENSE|Apache-2.0 +github.com/go-openapi/jsonpointer|https://github.com/go-openapi/jsonpointer/blob/v0.19.6/LICENSE|Apache-2.0 +github.com/go-openapi/jsonreference|https://github.com/go-openapi/jsonreference/blob/v0.20.2/LICENSE|Apache-2.0 +github.com/go-openapi/loads|https://github.com/go-openapi/loads/blob/v0.21.2/LICENSE|Apache-2.0 +github.com/go-openapi/runtime|https://github.com/go-openapi/runtime/blob/v0.26.0/LICENSE|Apache-2.0 +github.com/go-openapi/spec|https://github.com/go-openapi/spec/blob/v0.20.9/LICENSE|Apache-2.0 +github.com/go-openapi/strfmt|https://github.com/go-openapi/strfmt/blob/v0.21.7/LICENSE|Apache-2.0 +github.com/go-openapi/swag|https://github.com/go-openapi/swag/blob/v0.22.4/LICENSE|Apache-2.0 +github.com/go-openapi/validate|https://github.com/go-openapi/validate/blob/v0.22.1/LICENSE|Apache-2.0 +github.com/go-pkgz/expirable-cache|https://github.com/go-pkgz/expirable-cache/blob/v0.0.3/LICENSE|MIT +github.com/go-playground/locales|https://github.com/go-playground/locales/blob/v0.14.1/LICENSE|MIT +github.com/go-playground/universal-translator|https://github.com/go-playground/universal-translator/blob/v0.18.1/LICENSE|MIT +github.com/go-playground/validator/v10|https://github.com/go-playground/validator/blob/v10.15.1/LICENSE|MIT +github.com/go-redis/redis/v8|https://github.com/go-redis/redis/blob/v8.11.5/LICENSE|BSD-2-Clause +github.com/gobwas/glob|https://github.com/gobwas/glob/blob/v0.2.3/LICENSE|MIT +github.com/goccy/go-json|https://github.com/goccy/go-json/blob/v0.10.2/LICENSE|MIT +github.com/gofrs/uuid|https://github.com/gofrs/uuid/blob/v4.4.0/LICENSE|MIT +github.com/gogo/protobuf/proto|https://github.com/gogo/protobuf/blob/v1.3.2/LICENSE|BSD-3-Clause +github.com/gogo/protobuf|https://github.com/gogo/protobuf/blob/v1.3.2/LICENSE|BSD-3-Clause +github.com/golang-jwt/jwt/v4|https://github.com/golang-jwt/jwt/blob/v4.5.0/LICENSE|MIT +github.com/golang-jwt/jwt/v5|https://github.com/golang-jwt/jwt/blob/v5.0.0/LICENSE|MIT +github.com/golang-jwt/jwt|https://github.com/golang-jwt/jwt/blob/v3.2.2/LICENSE|MIT +github.com/golang/groupcache/lru|https://github.com/golang/groupcache/blob/41bb18bfe9da/LICENSE|Apache-2.0 +github.com/golang/groupcache|https://github.com/golang/groupcache/blob/41bb18bfe9da/LICENSE|Apache-2.0 +github.com/golang/protobuf/proto|https://github.com/golang/protobuf/blob/v1.5.3/LICENSE|BSD-3-Clause +github.com/golang/protobuf|https://github.com/golang/protobuf/blob/v1.5.3/LICENSE|BSD-3-Clause +github.com/golang/snappy|https://github.com/golang/snappy/blob/v0.0.4/LICENSE|BSD-3-Clause +github.com/google/btree|https://github.com/google/btree/blob/v1.1.2/LICENSE|Apache-2.0 +github.com/google/certificate-transparency-go|https://github.com/google/certificate-transparency-go/blob/v1.1.6/LICENSE|Apache-2.0 +github.com/google/go-cmp/cmp|https://github.com/google/go-cmp/blob/v0.5.9/LICENSE|BSD-3-Clause +github.com/google/go-querystring/query|https://github.com/google/go-querystring/blob/v1.1.0/LICENSE|BSD-3-Clause +github.com/google/gofuzz|https://github.com/google/gofuzz/blob/v1.2.0/LICENSE|Apache-2.0 +github.com/google/licenseclassifier/v2|https://github.com/google/licenseclassifier/blob/v2.0.0/v2/LICENSE|Apache-2.0 +github.com/google/s2a-go|https://github.com/google/s2a-go/blob/v0.1.5/LICENSE.md|Apache-2.0 +github.com/google/shlex|https://github.com/google/shlex/blob/e7afc7fbc510/COPYING|Apache-2.0 +github.com/google/uuid|https://github.com/google/uuid/blob/v1.3.1/LICENSE|BSD-3-Clause +github.com/google/wire|https://github.com/google/wire/blob/v0.5.0/LICENSE|Apache-2.0 +github.com/googleapis/enterprise-certificate-proxy/client|https://github.com/googleapis/enterprise-certificate-proxy/blob/v0.2.5/LICENSE|Apache-2.0 +github.com/googleapis/gax-go/v2|https://github.com/googleapis/gax-go/blob/v2.12.0/v2/LICENSE|BSD-3-Clause +github.com/gorilla/handlers|https://github.com/gorilla/handlers/blob/v1.5.1/LICENSE|BSD-2-Clause +github.com/gorilla/mux|https://github.com/gorilla/mux/blob/v1.8.0/LICENSE|BSD-3-Clause +github.com/gorilla/schema|https://github.com/gorilla/schema/blob/v1.2.0/LICENSE|BSD-3-Clause +github.com/gorilla/securecookie|https://github.com/gorilla/securecookie/blob/v1.1.1/LICENSE|BSD-3-Clause +github.com/gorilla/sessions|https://github.com/gorilla/sessions/blob/v1.2.1/LICENSE|BSD-3-Clause +github.com/gorilla/websocket|https://github.com/gorilla/websocket/blob/v1.5.0/LICENSE|BSD-2-Clause +github.com/gosuri/uitable/util/wordwrap|https://github.com/gosuri/uitable/blob/v0.0.4/util/wordwrap/LICENSE.md|MIT +github.com/gosuri/uitable|https://github.com/gosuri/uitable/blob/v0.0.4/LICENSE|MIT +github.com/gregjones/httpcache|https://github.com/gregjones/httpcache/blob/9cad4c3443a7/LICENSE.txt|MIT +github.com/hashicorp/errwrap|https://github.com/hashicorp/errwrap/blob/v1.1.0/LICENSE|MPL-2.0 +github.com/hashicorp/go-cleanhttp|https://github.com/hashicorp/go-cleanhttp/blob/v0.5.2/LICENSE|MPL-2.0 +github.com/hashicorp/go-getter|https://github.com/hashicorp/go-getter/blob/v1.7.1/LICENSE|MPL-2.0 +github.com/hashicorp/go-multierror|https://github.com/hashicorp/go-multierror/blob/v1.1.1/LICENSE|MPL-2.0 +github.com/hashicorp/go-retryablehttp|https://github.com/hashicorp/go-retryablehttp/blob/v0.7.4/LICENSE|MPL-2.0 +github.com/hashicorp/go-safetemp|https://github.com/hashicorp/go-safetemp/blob/v1.0.0/LICENSE|MPL-2.0 +github.com/hashicorp/go-uuid|https://github.com/hashicorp/go-uuid/blob/v1.0.3/LICENSE|MPL-2.0 +github.com/hashicorp/go-version|https://github.com/hashicorp/go-version/blob/v1.6.0/LICENSE|MPL-2.0 +github.com/hashicorp/golang-lru/v2/simplelru|https://github.com/hashicorp/golang-lru/blob/v2.0.6/simplelru/LICENSE_list|BSD-3-Clause +github.com/hashicorp/golang-lru/v2|https://github.com/hashicorp/golang-lru/blob/v2.0.6/LICENSE|MPL-2.0 +github.com/hashicorp/hcl/v2|https://github.com/hashicorp/hcl/blob/v2.17.0/LICENSE|MPL-2.0 +github.com/hashicorp/hcl|https://github.com/hashicorp/hcl/blob/v1.0.0/LICENSE|MPL-2.0 +github.com/huandu/xstrings|https://github.com/huandu/xstrings/blob/v1.4.0/LICENSE|MIT +github.com/imdario/mergo|https://github.com/imdario/mergo/blob/v0.3.15/LICENSE|BSD-3-Clause +github.com/in-toto/in-toto-golang|https://github.com/in-toto/in-toto-golang/blob/v0.9.0/LICENSE|Apache-2.0 +github.com/inconshreveable/mousetrap|https://github.com/inconshreveable/mousetrap/blob/v1.1.0/LICENSE|Apache-2.0 +github.com/jbenet/go-context/io|https://github.com/jbenet/go-context/blob/d14ea06fba99/LICENSE|MIT +github.com/jbenet/go-context|https://github.com/jbenet/go-context/blob/d14ea06fba99/LICENSE|MIT +github.com/jedisct1/go-minisign|https://github.com/jedisct1/go-minisign/blob/1c139d1cc84b/LICENSE|MIT +github.com/jmespath/go-jmespath|https://github.com/jmespath/go-jmespath/blob/v0.4.0/LICENSE|Apache-2.0 +github.com/jmoiron/sqlx|https://github.com/jmoiron/sqlx/blob/v1.3.5/LICENSE|MIT +github.com/josharian/intern|https://github.com/josharian/intern/blob/v1.0.0/license.md|MIT +github.com/json-iterator/go|https://github.com/json-iterator/go/blob/v1.1.12/LICENSE|MIT +github.com/jtolds/gls|https://github.com/jtolds/gls/blob/v4.20.0/LICENSE|MIT +github.com/kballard/go-shellquote|https://github.com/kballard/go-shellquote/blob/95032a82bc51/LICENSE|MIT +github.com/kevinburke/ssh_config|https://github.com/kevinburke/ssh_config/blob/v1.2.0/LICENSE|MIT +github.com/klauspost/compress/flate|https://github.com/klauspost/compress/blob/v1.16.7/LICENSE|Apache-2.0 +github.com/klauspost/compress/internal/snapref|https://github.com/klauspost/compress/blob/v1.16.7/internal/snapref/LICENSE|BSD-3-Clause +github.com/klauspost/compress/zstd/internal/xxhash|https://github.com/klauspost/compress/blob/v1.16.7/zstd/internal/xxhash/LICENSE.txt|MIT +github.com/klauspost/compress|https://github.com/klauspost/compress/blob/v1.16.7/LICENSE|Apache-2.0 +github.com/klauspost/pgzip|https://github.com/klauspost/pgzip/blob/v1.2.6/LICENSE|MIT +github.com/knqyf263/go-apk-version|https://github.com/knqyf263/go-apk-version/blob/041fdbb8563f/LICENSE|Apache-2.0 +github.com/knqyf263/go-deb-version|https://github.com/knqyf263/go-deb-version/blob/3ed183d23422/LICENSE|MIT +github.com/knqyf263/go-rpm-version|https://github.com/knqyf263/go-rpm-version/blob/631e686d1075/LICENSE|MIT +github.com/knqyf263/nested|https://github.com/knqyf263/nested/blob/v0.0.1/LICENSE|MIT +github.com/kylelemons/godebug|https://github.com/kylelemons/godebug/blob/v1.1.0/LICENSE|Apache-2.0 +github.com/lann/builder|https://github.com/lann/builder/blob/47ae307949d0/LICENSE|MIT +github.com/lann/ps|https://github.com/lann/ps/blob/62de8c46ede0/LICENSE|MIT +github.com/leodido/go-urn|https://github.com/leodido/go-urn/blob/v1.2.4/LICENSE|MIT +github.com/lestrrat-go/blackmagic|https://github.com/lestrrat-go/blackmagic/blob/v1.0.1/LICENSE|MIT +github.com/lestrrat-go/httpcc|https://github.com/lestrrat-go/httpcc/blob/v1.0.1/LICENSE|MIT +github.com/lestrrat-go/httprc|https://github.com/lestrrat-go/httprc/blob/v1.0.4/LICENSE|MIT +github.com/lestrrat-go/jwx/v2|https://github.com/lestrrat-go/jwx/blob/v2.0.11/LICENSE|MIT +github.com/lestrrat-go/option|https://github.com/lestrrat-go/option/blob/v1.0.1/LICENSE|MIT +github.com/liamg/iamgo|https://github.com/liamg/iamgo/blob/v0.0.9/LICENSE|MIT +github.com/liamg/jfather|https://github.com/liamg/jfather/blob/v0.0.7/LICENSE|MIT +github.com/liamg/memoryfs|https://github.com/liamg/memoryfs/blob/v1.4.3/LICENSE|MIT +github.com/lib/pq|https://github.com/lib/pq/blob/v1.10.9/LICENSE.md|MIT +github.com/liggitt/tabwriter|https://github.com/liggitt/tabwriter/blob/89fcab3d43de/LICENSE|BSD-3-Clause +github.com/lunixbochs/struc|https://github.com/lunixbochs/struc/blob/784aaebc1d40/LICENSE|MIT +github.com/magiconair/properties|https://github.com/magiconair/properties/blob/v1.8.7/LICENSE.md|BSD-2-Clause +github.com/mailru/easyjson|https://github.com/mailru/easyjson/blob/v0.7.7/LICENSE|MIT +github.com/masahiro331/go-disk|https://github.com/masahiro331/go-disk/blob/c8da316f91ac/LICENSE|MIT +github.com/masahiro331/go-ebs-file|https://github.com/masahiro331/go-ebs-file/blob/005c81d4ae43/LICENSE|MIT +github.com/masahiro331/go-mvn-version|https://github.com/masahiro331/go-mvn-version/blob/d3157d602a08/LICENCE|Apache-2.0 +github.com/mattn/go-colorable|https://github.com/mattn/go-colorable/blob/v0.1.13/LICENSE|MIT +github.com/mattn/go-isatty|https://github.com/mattn/go-isatty/blob/v0.0.19/LICENSE|MIT +github.com/mattn/go-runewidth|https://github.com/mattn/go-runewidth/blob/v0.0.15/LICENSE|MIT +github.com/mattn/go-sqlite3|https://github.com/mattn/go-sqlite3/blob/v1.14.17/LICENSE|MIT +github.com/matttproud/golang_protobuf_extensions/pbutil|https://github.com/matttproud/golang_protobuf_extensions/blob/v1.0.4/LICENSE|Apache-2.0 +github.com/microsoft/go-rustaudit|https://github.com/microsoft/go-rustaudit/blob/204dfee52032/LICENSE|MIT +github.com/miekg/pkcs11|https://github.com/miekg/pkcs11/blob/v1.1.1/LICENSE|BSD-3-Clause +github.com/mitchellh/copystructure|https://github.com/mitchellh/copystructure/blob/v1.2.0/LICENSE|MIT +github.com/mitchellh/go-homedir|https://github.com/mitchellh/go-homedir/blob/v1.1.0/LICENSE|MIT +github.com/mitchellh/go-testing-interface|https://github.com/mitchellh/go-testing-interface/blob/v1.14.1/LICENSE|MIT +github.com/mitchellh/go-wordwrap|https://github.com/mitchellh/go-wordwrap/blob/v1.0.1/LICENSE.md|MIT +github.com/mitchellh/hashstructure/v2|https://github.com/mitchellh/hashstructure/blob/v2.0.2/LICENSE|MIT +github.com/mitchellh/mapstructure|https://github.com/mitchellh/mapstructure/blob/v1.5.0/LICENSE|MIT +github.com/mitchellh/reflectwalk|https://github.com/mitchellh/reflectwalk/blob/v1.0.2/LICENSE|MIT +github.com/moby/buildkit|https://github.com/moby/buildkit/blob/v0.11.6/LICENSE|Apache-2.0 +github.com/moby/locker|https://github.com/moby/locker/blob/v1.0.1/LICENSE|Apache-2.0 +github.com/moby/spdystream|https://github.com/moby/spdystream/blob/v0.2.0/LICENSE|Apache-2.0 +github.com/moby/sys/mountinfo|https://github.com/moby/sys/blob/mountinfo/v0.6.2/mountinfo/LICENSE|Apache-2.0 +github.com/moby/sys/sequential|https://github.com/moby/sys/blob/sequential/v0.5.0/sequential/LICENSE|Apache-2.0 +github.com/moby/sys/signal|https://github.com/moby/sys/blob/signal/v0.7.0/signal/LICENSE|Apache-2.0 +github.com/moby/term|https://github.com/moby/term/blob/v0.5.0/LICENSE|Apache-2.0 +github.com/modern-go/concurrent|https://github.com/modern-go/concurrent/blob/bacd9c7ef1dd/LICENSE|Apache-2.0 +github.com/modern-go/reflect2|https://github.com/modern-go/reflect2/blob/v1.0.2/LICENSE|Apache-2.0 +github.com/monochromegane/go-gitignore|https://github.com/monochromegane/go-gitignore/blob/205db1a8cc00/LICENSE|MIT +github.com/morikuni/aec|https://github.com/morikuni/aec/blob/v1.0.0/LICENSE|MIT +github.com/mpvl/unique|https://github.com/mpvl/unique/blob/cbe035fff7de/LICENSE|MIT +github.com/munnerz/goautoneg|https://github.com/munnerz/goautoneg/blob/a7dc8b61c822/LICENSE|BSD-3-Clause +github.com/nmcclain/asn1-ber|https://github.com/nmcclain/asn1-ber/blob/2661553a0484/LICENSE|BSD-3-Clause +github.com/nmcclain/ldap|https://github.com/nmcclain/ldap/blob/7f8d1e44eeba/LICENSE|BSD-3-Clause +github.com/notaryproject/notation-core-go|https://github.com/notaryproject/notation-core-go/blob/v1.0.0/LICENSE|Apache-2.0 +github.com/notaryproject/notation-go|https://github.com/notaryproject/notation-go/blob/v1.0.0/LICENSE|Apache-2.0 +github.com/nozzle/throttler|https://github.com/nozzle/throttler/blob/2ea982251481/LICENSE|Apache-2.0 +github.com/oklog/ulid|https://github.com/oklog/ulid/blob/v1.3.1/LICENSE|Apache-2.0 +github.com/oleiade/reflections|https://github.com/oleiade/reflections/blob/v1.0.1/LICENSE|MIT +github.com/olekukonko/tablewriter|https://github.com/olekukonko/tablewriter/blob/v0.0.5/LICENSE.md|MIT +github.com/opencontainers/distribution-spec/specs-go|https://github.com/opencontainers/distribution-spec/blob/067a0f5b0e25/specs-go/LICENSE|Apache-2.0 +github.com/opencontainers/go-digest|https://github.com/opencontainers/go-digest/blob/v1.0.0/LICENSE|Apache-2.0 +github.com/opencontainers/image-spec/specs-go|https://github.com/opencontainers/image-spec/blob/v1.1.0-rc5/LICENSE|Apache-2.0 +github.com/opencontainers/image-spec|https://github.com/opencontainers/image-spec/blob/v1.1.0-rc5/LICENSE|Apache-2.0 +github.com/opencontainers/runc/libcontainer/user|https://github.com/opencontainers/runc/blob/v1.1.9/LICENSE|Apache-2.0 +github.com/opencontainers/runtime-spec/specs-go|https://github.com/opencontainers/runtime-spec/blob/v1.1.0/LICENSE|Apache-2.0 +github.com/opencontainers/selinux/go-selinux|https://github.com/opencontainers/selinux/blob/v1.11.0/LICENSE|Apache-2.0 +github.com/opencontainers/umoci/third_party/shared|https://github.com/opencontainers/umoci/blob/e60a0cc726e6/third_party/shared/COPYING|Apache-2.0 +github.com/opencontainers/umoci|https://github.com/opencontainers/umoci/blob/e60a0cc726e6/COPYING|Apache-2.0 +github.com/opentracing/opentracing-go|https://github.com/opentracing/opentracing-go/blob/v1.2.0/LICENSE|Apache-2.0 +github.com/outcaste-io/ristretto/z|https://github.com/outcaste-io/ristretto/blob/v0.2.1/z/LICENSE|MIT +github.com/outcaste-io/ristretto|https://github.com/outcaste-io/ristretto/blob/v0.2.1/LICENSE|Apache-2.0 +github.com/package-url/packageurl-go|https://github.com/package-url/packageurl-go/blob/f8bb31c1f10b/LICENSE|MIT +github.com/pborman/uuid|https://github.com/pborman/uuid/blob/v1.2.1/LICENSE|BSD-3-Clause +github.com/pelletier/go-toml/v2|https://github.com/pelletier/go-toml/blob/v2.0.8/LICENSE|MIT +github.com/peterbourgon/diskv|https://github.com/peterbourgon/diskv/blob/v2.0.1/LICENSE|MIT +github.com/phayes/freeport|https://github.com/phayes/freeport/blob/74d24b5ae9f5/LICENSE.md|BSD-3-Clause +github.com/philhofer/fwd|https://github.com/philhofer/fwd/blob/v1.1.2/LICENSE.md|MIT +github.com/pjbgf/sha1cd|https://github.com/pjbgf/sha1cd/blob/v0.3.0/LICENSE|Apache-2.0 +github.com/pkg/browser|https://github.com/pkg/browser/blob/681adbf594b8/LICENSE|BSD-2-Clause +github.com/pkg/errors|https://github.com/pkg/errors/blob/v0.9.1/LICENSE|BSD-2-Clause +github.com/pmezard/go-difflib/difflib|https://github.com/pmezard/go-difflib/blob/v1.0.0/LICENSE|BSD-3-Clause +github.com/proglottis/gpgme|https://github.com/proglottis/gpgme/blob/v0.1.3/LICENSE|BSD-3-Clause +github.com/project-zot/mockoidc|https://github.com/project-zot/mockoidc/blob/f607b4b5fb97/LICENSE|MIT +github.com/prometheus/client_golang/prometheus|https://github.com/prometheus/client_golang/blob/v1.16.0/LICENSE|Apache-2.0 +github.com/prometheus/client_model/go|https://github.com/prometheus/client_model/blob/v0.4.0/LICENSE|Apache-2.0 +github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg|https://github.com/prometheus/common/blob/v0.44.0/internal/bitbucket.org/ww/goautoneg/README.txt|BSD-3-Clause +github.com/prometheus/common|https://github.com/prometheus/common/blob/v0.44.0/LICENSE|Apache-2.0 +github.com/prometheus/procfs|https://github.com/prometheus/procfs/blob/v0.10.1/LICENSE|Apache-2.0 +github.com/puzpuzpuz/xsync/v2|https://github.com/puzpuzpuz/xsync/blob/v2.4.1/LICENSE|MIT +github.com/rcrowley/go-metrics|https://github.com/rcrowley/go-metrics/blob/cf1acfcdf475/LICENSE|BSD-2-Clause-FreeBSD +github.com/remyoudompheng/bigfft|https://github.com/remyoudompheng/bigfft/blob/24d4a6f8daec/LICENSE|BSD-3-Clause +github.com/rivo/uniseg|https://github.com/rivo/uniseg/blob/v0.4.4/LICENSE.txt|MIT github.com/rootless-containers/proto/go-proto|Unknown|Unknown -github.com/rs/zerolog|https://github.com/rs/zerolog/blob/master/LICENSE|MIT -github.com/russross/blackfriday/v2|https://github.com/russross/blackfriday/blob/master/v2/LICENSE.txt|BSD-2-Clause -github.com/ryanuber/go-glob|https://github.com/ryanuber/go-glob/blob/master/LICENSE|MIT -github.com/saracen/walker|https://github.com/saracen/walker/blob/master/LICENSE|MIT -github.com/secure-systems-lab/go-securesystemslib/cjson|https://github.com/secure-systems-lab/go-securesystemslib/blob/master/cjson/LICENSE|MIT -github.com/secure-systems-lab/go-securesystemslib|https://github.com/secure-systems-lab/go-securesystemslib/blob/master/LICENSE|MIT -github.com/segmentio/ksuid|https://github.com/segmentio/ksuid/blob/master/LICENSE.md|MIT -github.com/sergi/go-diff/diffmatchpatch|https://github.com/sergi/go-diff/blob/master/diffmatchpatch/LICENSE|MIT -github.com/shibumi/go-pathspec|https://github.com/shibumi/go-pathspec/blob/master/LICENSE|Apache-2.0 -github.com/sirupsen/logrus|https://github.com/sirupsen/logrus/blob/master/LICENSE|MIT -github.com/smartystreets/assertions|https://github.com/smartystreets/assertions/blob/master/LICENSE.md|MIT -github.com/smartystreets/assertions/internal/go-diff/diffmatchpatch|https://github.com/smartystreets/assertions/blob/master/internal/go-diff/diffmatchpatch/LICENSE|MIT -github.com/smartystreets/assertions/internal/go-render/render|https://github.com/smartystreets/assertions/blob/master/internal/go-render/render/LICENSE|BSD-3-Clause -github.com/smartystreets/assertions/internal/oglematchers|https://github.com/smartystreets/assertions/blob/master/internal/oglematchers/LICENSE|Apache-2.0 -github.com/smartystreets/goconvey|https://github.com/smartystreets/goconvey/blob/master/LICENSE.md|MIT -github.com/soheilhy/cmux|https://github.com/soheilhy/cmux/blob/master/LICENSE|Apache-2.0 -github.com/spf13/afero|https://github.com/spf13/afero/blob/master/LICENSE.txt|Apache-2.0 -github.com/spf13/cast|https://github.com/spf13/cast/blob/master/LICENSE|MIT -github.com/spf13/cobra|https://github.com/spf13/cobra/blob/master/LICENSE.txt|Apache-2.0 -github.com/spf13/jwalterweatherman|https://github.com/spf13/jwalterweatherman/blob/master/LICENSE|MIT -github.com/spf13/pflag|https://github.com/spf13/pflag/blob/master/LICENSE|BSD-3-Clause -github.com/spf13/viper|https://github.com/spf13/viper/blob/master/LICENSE|MIT -github.com/stefanberger/go-pkcs11uri|https://github.com/stefanberger/go-pkcs11uri/blob/master/LICENSE|Apache-2.0 -github.com/stretchr/objx|https://github.com/stretchr/objx/blob/master/LICENSE|MIT -github.com/stretchr/testify|https://github.com/stretchr/testify/blob/master/LICENSE|MIT -github.com/subosito/gotenv|https://github.com/subosito/gotenv/blob/master/LICENSE|MIT -github.com/swaggo/files|https://github.com/swaggo/files/blob/master/LICENSE|MIT -github.com/swaggo/http-swagger|https://github.com/swaggo/http-swagger/blob/master/LICENSE|MIT -github.com/swaggo/swag|https://github.com/swaggo/swag/blob/master/license|MIT -github.com/tent/canonical-json-go|https://github.com/tent/canonical-json-go/blob/master/LICENSE|BSD-3-Clause -github.com/thales-e-security/pool|https://github.com/thales-e-security/pool/blob/master/LICENSE|Apache-2.0 -github.com/ThalesIgnite/crypto11|https://github.com/ThalesIgnite/crypto11/blob/master/LICENCE.txt|MIT -github.com/theupdateframework/go-tuf|https://github.com/theupdateframework/go-tuf/blob/master/LICENSE|BSD-3-Clause -github.com/tmccombs/hcl2json|https://github.com/tmccombs/hcl2json/blob/master/LICENSE|Apache-2.0 -github.com/tmc/grpc-websocket-proxy/wsproxy|https://github.com/tmc/grpc-websocket-proxy/blob/master/wsproxy/LICENSE|MIT -github.com/twitchtv/twirp|https://github.com/twitchtv/twirp/blob/master/LICENSE|Apache-2.0 -github.com/ulikunitz/xz|https://github.com/ulikunitz/xz/blob/master/LICENSE|BSD-3-Clause -github.com/urfave/cli|https://github.com/urfave/cli/blob/master/LICENSE|MIT -github.com/urfave/cli/v2|https://github.com/urfave/cli/blob/master/v2/LICENSE|MIT -github.com/vbatts/go-mtree|https://github.com/vbatts/go-mtree/blob/master/LICENSE|BSD-3-Clause -github.com/vbatts/go-mtree/pkg/govis|https://github.com/vbatts/go-mtree/blob/master/pkg/govis/COPYING|Apache-2.0 -github.com/vbatts/tar-split/archive/tar|https://github.com/vbatts/tar-split/blob/master/archive/tar/LICENSE|BSD-3-Clause -github.com/vbauerster/mpb/v7/cwriter|Unknown|Unknown -github.com/vbauerster/mpb/v7/decor|Unknown|Unknown -github.com/vbauerster/mpb/v7/internal|Unknown|Unknown -github.com/vbauerster/mpb/v7|Unknown|Unknown -github.com/vektah/gqlparser/v2|https://github.com/vektah/gqlparser/blob/master/v2/LICENSE|MIT -github.com/VividCortex/ewma|https://github.com/VividCortex/ewma/blob/master/LICENSE|MIT -github.com/xanzy/go-gitlab|https://github.com/xanzy/go-gitlab/blob/master/LICENSE|Apache-2.0 -github.com/xanzy/ssh-agent|https://github.com/xanzy/ssh-agent/blob/master/LICENSE|Apache-2.0 -github.com/xeipuuv/gojsonpointer|https://github.com/xeipuuv/gojsonpointer/blob/master/LICENSE-APACHE-2.0.txt|Apache-2.0 -github.com/xeipuuv/gojsonreference|https://github.com/xeipuuv/gojsonreference/blob/master/LICENSE-APACHE-2.0.txt|Apache-2.0 -github.com/xiang90/probing|https://github.com/xiang90/probing/blob/master/LICENSE|MIT -github.com/yashtewari/glob-intersection|https://github.com/yashtewari/glob-intersection/blob/master/LICENSE|Apache-2.0 -github.com/zclconf/go-cty/cty|https://github.com/zclconf/go-cty/blob/master/cty/LICENSE|MIT -github.com/zclconf/go-cty-yaml|https://github.com/zclconf/go-cty-yaml/blob/master/LICENSE|Apache-2.0 -github.com/zeebo/errs|https://github.com/zeebo/errs/blob/master/LICENSE|MIT -go.etcd.io/bbolt|Unknown|MIT -go.etcd.io/etcd/api/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/api/v3/version|Unknown|Apache-2.0 -go.etcd.io/etcd/client/pkg/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/client/v2|Unknown|Apache-2.0 -go.etcd.io/etcd/client/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/etcdctl/v3/ctlv3/command|Unknown|Apache-2.0 -go.etcd.io/etcd/etcdctl/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/etcdutl/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/pkg/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/raft/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/server/v3|Unknown|Apache-2.0 -go.etcd.io/etcd/tests/v3/integration|Unknown|Apache-2.0 -go.etcd.io/etcd/v3|Unknown|Apache-2.0 -golang.org/x/crypto/ed25519|Unknown|BSD-3-Clause -golang.org/x/crypto/md4|Unknown|BSD-3-Clause -golang.org/x/crypto/pkcs12|Unknown|BSD-3-Clause -golang.org/x/crypto/ripemd160|Unknown|BSD-3-Clause -golang.org/x/crypto/sha3|Unknown|BSD-3-Clause -golang.org/x/crypto|Unknown|BSD-3-Clause -golang.org/x/mod/semver|Unknown|BSD-3-Clause -golang.org/x/mod|Unknown|BSD-3-Clause -golang.org/x/net/context/ctxhttp|Unknown|BSD-3-Clause -golang.org/x/net/context|Unknown|BSD-3-Clause -golang.org/x/net/idna|Unknown|BSD-3-Clause -golang.org/x/net/publicsuffix|Unknown|BSD-3-Clause -golang.org/x/net|Unknown|BSD-3-Clause -golang.org/x/net/webdav|Unknown|BSD-3-Clause -golang.org/x/oauth2|Unknown|BSD-3-Clause -golang.org/x/sync/errgroup|Unknown|BSD-3-Clause -golang.org/x/sync/singleflight|Unknown|BSD-3-Clause -golang.org/x/sys/execabs|Unknown|BSD-3-Clause -golang.org/x/sys|Unknown|BSD-3-Clause -golang.org/x/term|Unknown|BSD-3-Clause -golang.org/x/text|Unknown|BSD-3-Clause -golang.org/x/time/rate|Unknown|BSD-3-Clause -golang.org/x/tools|Unknown|BSD-3-Clause -golang.org/x/xerrors|Unknown|BSD-3-Clause -go.mongodb.org/mongo-driver|Unknown|Apache-2.0 -go.mozilla.org/pkcs7|Unknown|MIT -google.golang.org/api/googleapi|Unknown|BSD-3-Clause -google.golang.org/api/internal/third_party/uritemplates|Unknown|BSD-3-Clause -google.golang.org/api|Unknown|BSD-3-Clause -google.golang.org/appengine|Unknown|Apache-2.0 -google.golang.org/genproto/googleapis/rpc/status|Unknown|Apache-2.0 -google.golang.org/genproto/googleapis/rpc|Unknown|Apache-2.0 -google.golang.org/genproto/googleapis|Unknown|Apache-2.0 -google.golang.org/genproto|Unknown|Apache-2.0 -google.golang.org/grpc|Unknown|Apache-2.0 -google.golang.org/protobuf|Unknown|BSD-3-Clause -go.opencensus.io|Unknown|Apache-2.0 -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc|Unknown|Apache-2.0 -go.opentelemetry.io/contrib|Unknown|Apache-2.0 -go.opentelemetry.io/otel/exporters/otlp|Unknown|Apache-2.0 -go.opentelemetry.io/otel/metric|Unknown|Apache-2.0 -go.opentelemetry.io/otel/sdk/export/metric|Unknown|Apache-2.0 -go.opentelemetry.io/otel/sdk/metric|Unknown|Apache-2.0 -go.opentelemetry.io/otel/sdk/resource|Unknown|Apache-2.0 -go.opentelemetry.io/otel/sdk|Unknown|Apache-2.0 -go.opentelemetry.io/otel/trace|Unknown|Apache-2.0 -go.opentelemetry.io/otel|Unknown|Apache-2.0 -go.opentelemetry.io/proto/otlp|Unknown|Apache-2.0 -gopkg.in/cheggaaa/pb.v1|Unknown|BSD-3-Clause -gopkg.in/inf.v0|Unknown|BSD-3-Clause -gopkg.in/ini.v1|Unknown|Apache-2.0 -gopkg.in/natefinch/lumberjack.v2|Unknown|MIT -gopkg.in/resty.v1|Unknown|MIT -gopkg.in/square/go-jose.v2/json|Unknown|BSD-3-Clause -gopkg.in/square/go-jose.v2|Unknown|Apache-2.0 -gopkg.in/warnings.v0|Unknown|BSD-2-Clause -gopkg.in/yaml.v2|Unknown|Apache-2.0 -gopkg.in/yaml.v3|Unknown|MIT -go.uber.org/atomic|Unknown|MIT -go.uber.org/multierr|Unknown|MIT -go.uber.org/zap|Unknown|MIT -k8s.io/apimachinery|Unknown|Apache-2.0 -k8s.io/api|Unknown|Apache-2.0 -k8s.io/client-go|Unknown|Apache-2.0 -k8s.io/klog/v2|Unknown|Apache-2.0 -sigs.k8s.io/json|Unknown|Apache-2.0 -sigs.k8s.io/yaml|Unknown|MIT -zotregistry.io/zot|https://github.com/rchincha/zot/blob/master/LICENSE|Apache-2.0 +github.com/rs/zerolog|https://github.com/rs/zerolog/blob/v1.30.0/LICENSE|MIT +github.com/rubenv/sql-migrate/sqlparse|https://github.com/rubenv/sql-migrate/blob/v1.3.1/sqlparse/LICENSE|MIT +github.com/rubenv/sql-migrate|https://github.com/rubenv/sql-migrate/blob/v1.3.1/LICENSE|MIT +github.com/russross/blackfriday/v2|https://github.com/russross/blackfriday/blob/v2.1.0/LICENSE.txt|BSD-2-Clause +github.com/samber/lo|https://github.com/samber/lo/blob/v1.38.1/LICENSE|MIT +github.com/saracen/walker|https://github.com/saracen/walker/blob/v0.1.3/LICENSE|MIT +github.com/secure-systems-lab/go-securesystemslib/cjson|https://github.com/secure-systems-lab/go-securesystemslib/blob/v0.7.0/LICENSE|MIT +github.com/secure-systems-lab/go-securesystemslib|https://github.com/secure-systems-lab/go-securesystemslib/blob/v0.7.0/LICENSE|MIT +github.com/segmentio/ksuid|https://github.com/segmentio/ksuid/blob/v1.0.4/LICENSE.md|MIT +github.com/sergi/go-diff/diffmatchpatch|https://github.com/sergi/go-diff/blob/v1.3.1/LICENSE|MIT +github.com/shibumi/go-pathspec|https://github.com/shibumi/go-pathspec/blob/v1.3.0/LICENSE|Apache-2.0 +github.com/shopspring/decimal|https://github.com/shopspring/decimal/blob/v1.3.1/LICENSE|MIT +github.com/sirupsen/logrus|https://github.com/sirupsen/logrus/blob/v1.9.3/LICENSE|MIT +github.com/skeema/knownhosts|https://github.com/skeema/knownhosts/blob/v1.1.1/LICENSE|Apache-2.0 +github.com/smarty/assertions/internal/go-diff/diffmatchpatch|https://github.com/smarty/assertions/blob/v1.15.0/internal/go-diff/LICENSE|MIT +github.com/smarty/assertions/internal/go-render/render|https://github.com/smarty/assertions/blob/v1.15.0/internal/go-render/LICENSE|BSD-3-Clause +github.com/smarty/assertions/internal/oglematchers|https://github.com/smarty/assertions/blob/v1.15.0/internal/oglematchers/LICENSE|Apache-2.0 +github.com/smarty/assertions|https://github.com/smarty/assertions/blob/v1.15.0/LICENSE.md|MIT +github.com/smartystreets/goconvey|https://github.com/smartystreets/goconvey/blob/v1.8.1/LICENSE.md|MIT +github.com/spf13/afero|https://github.com/spf13/afero/blob/v1.9.5/LICENSE.txt|Apache-2.0 +github.com/spf13/cast|https://github.com/spf13/cast/blob/v1.5.1/LICENSE|MIT +github.com/spf13/cobra|https://github.com/spf13/cobra/blob/v1.7.0/LICENSE.txt|Apache-2.0 +github.com/spf13/jwalterweatherman|https://github.com/spf13/jwalterweatherman/blob/v1.1.0/LICENSE|MIT +github.com/spf13/pflag|https://github.com/spf13/pflag/blob/v1.0.5/LICENSE|BSD-3-Clause +github.com/spf13/viper|https://github.com/spf13/viper/blob/v1.16.0/LICENSE|MIT +github.com/spiffe/go-spiffe/v2|https://github.com/spiffe/go-spiffe/blob/v2.1.6/v2/LICENSE|Apache-2.0 +github.com/stefanberger/go-pkcs11uri|https://github.com/stefanberger/go-pkcs11uri/blob/78d3cae3a980/LICENSE|Apache-2.0 +github.com/stretchr/objx|https://github.com/stretchr/objx/blob/v0.5.0/LICENSE|MIT +github.com/stretchr/testify|https://github.com/stretchr/testify/blob/v1.8.4/LICENSE|MIT +github.com/subosito/gotenv|https://github.com/subosito/gotenv/blob/v1.4.2/LICENSE|MIT +github.com/swaggo/files|https://github.com/swaggo/files/blob/28940afbdbfe/LICENSE|MIT +github.com/swaggo/http-swagger|https://github.com/swaggo/http-swagger/blob/v1.3.4/LICENSE|MIT +github.com/swaggo/swag|https://github.com/swaggo/swag/blob/v1.16.2/license|MIT +github.com/tetratelabs/wazero|https://github.com/tetratelabs/wazero/blob/v1.2.1/LICENSE|Apache-2.0 +github.com/thales-e-security/pool|https://github.com/thales-e-security/pool/blob/v0.0.2/LICENSE|Apache-2.0 +github.com/theupdateframework/go-tuf|https://github.com/theupdateframework/go-tuf/blob/v0.6.1/LICENSE|BSD-3-Clause +github.com/tinylib/msgp|https://github.com/tinylib/msgp/blob/v1.1.8/LICENSE|MIT +github.com/titanous/rocacheck|https://github.com/titanous/rocacheck/blob/afe73141d399/LICENSE|MIT +github.com/transparency-dev/merkle|https://github.com/transparency-dev/merkle/blob/v0.0.2/LICENSE|Apache-2.0 +github.com/twitchtv/twirp|https://github.com/twitchtv/twirp/blob/v8.1.2/LICENSE|Apache-2.0 +github.com/ulikunitz/xz|https://github.com/ulikunitz/xz/blob/v0.5.11/LICENSE|BSD-3-Clause +github.com/urfave/cli/v2|https://github.com/urfave/cli/blob/v2.25.5/LICENSE|MIT +github.com/urfave/cli|https://github.com/urfave/cli/blob/v1.22.14/LICENSE|MIT +github.com/vbatts/go-mtree/pkg/govis|https://github.com/vbatts/go-mtree/blob/v0.5.2/pkg/govis/COPYING|Apache-2.0 +github.com/vbatts/go-mtree|https://github.com/vbatts/go-mtree/blob/v0.5.2/LICENSE|BSD-3-Clause +github.com/vbatts/tar-split/archive/tar|https://github.com/vbatts/tar-split/blob/v0.11.5/LICENSE|BSD-3-Clause +github.com/vbauerster/mpb/v8|https://github.com/vbauerster/mpb/blob/v8.6.1/UNLICENSE|Unlicense +github.com/vektah/gqlparser/v2|https://github.com/vektah/gqlparser/blob/v2.5.9/LICENSE|MIT +github.com/xanzy/go-gitlab|https://github.com/xanzy/go-gitlab/blob/v0.90.0/LICENSE|Apache-2.0 +github.com/xanzy/ssh-agent|https://github.com/xanzy/ssh-agent/blob/v0.3.3/LICENSE|Apache-2.0 +github.com/xeipuuv/gojsonpointer|https://github.com/xeipuuv/gojsonpointer/blob/02993c407bfb/LICENSE-APACHE-2.0.txt|Apache-2.0 +github.com/xeipuuv/gojsonreference|https://github.com/xeipuuv/gojsonreference/blob/bd5ef7bd5415/LICENSE-APACHE-2.0.txt|Apache-2.0 +github.com/xeipuuv/gojsonschema|https://github.com/xeipuuv/gojsonschema/blob/v1.2.0/LICENSE-APACHE-2.0.txt|Apache-2.0 +github.com/xlab/treeprint|https://github.com/xlab/treeprint/blob/v1.2.0/LICENSE|MIT +github.com/xrash/smetrics|https://github.com/xrash/smetrics/blob/039620a65673/LICENSE|MIT +github.com/yashtewari/glob-intersection|https://github.com/yashtewari/glob-intersection/blob/v0.2.0/LICENSE|Apache-2.0 +github.com/zclconf/go-cty-yaml|https://github.com/zclconf/go-cty-yaml/blob/v1.0.3/LICENSE|Apache-2.0 +github.com/zclconf/go-cty/cty|https://github.com/zclconf/go-cty/blob/v1.13.0/LICENSE|MIT +github.com/zeebo/errs|https://github.com/zeebo/errs/blob/v1.3.0/LICENSE|MIT +github.com/zitadel/oidc|https://github.com/zitadel/oidc/blob/v1.13.4/LICENSE|Apache-2.0 +go.etcd.io/bbolt|https://github.com/etcd-io/bbolt/blob/v1.3.7/LICENSE|MIT +go.mongodb.org/mongo-driver|https://github.com/mongodb/mongo-go-driver/blob/v1.11.3/LICENSE|Apache-2.0 +go.mozilla.org/pkcs7|https://github.com/mozilla-services/pkcs7/blob/33d05740a352/LICENSE|MIT +go.opencensus.io|https://github.com/census-instrumentation/opencensus-go/blob/v0.24.0/LICENSE|Apache-2.0 +go.opentelemetry.io/otel/metric|https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.16.0/metric/LICENSE|Apache-2.0 +go.opentelemetry.io/otel/sdk|https://github.com/open-telemetry/opentelemetry-go/blob/sdk/v1.16.0/sdk/LICENSE|Apache-2.0 +go.opentelemetry.io/otel/trace|https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.16.0/trace/LICENSE|Apache-2.0 +go.opentelemetry.io/otel|https://github.com/open-telemetry/opentelemetry-go/blob/v1.16.0/LICENSE|Apache-2.0 +go.uber.org/atomic|https://github.com/uber-go/atomic/blob/v1.11.0/LICENSE.txt|MIT +go.uber.org/multierr|https://github.com/uber-go/multierr/blob/v1.11.0/LICENSE.txt|MIT +go.uber.org/zap|https://github.com/uber-go/zap/blob/v1.25.0/LICENSE.txt|MIT +go4.org/intern|https://github.com/go4org/intern/blob/ae77deb06f29/LICENSE|BSD-3-Clause +go4.org/unsafe/assume-no-moving-gc|https://github.com/go4org/unsafe-assume-no-moving-gc/blob/928513b29760/LICENSE|BSD-3-Clause +golang.org/x/crypto/md4|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/crypto/pbkdf2|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/crypto/pkcs12|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/crypto/ripemd160|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/crypto/sha3|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/crypto|https://cs.opensource.google/go/x/crypto/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/exp/constraints|https://cs.opensource.google/go/x/exp/+/d852ddb8:LICENSE|BSD-3-Clause +golang.org/x/mod/semver|https://cs.opensource.google/go/x/mod/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/mod|https://cs.opensource.google/go/x/mod/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/net/context|https://cs.opensource.google/go/x/net/+/v0.15.0:LICENSE|BSD-3-Clause +golang.org/x/net/html|https://cs.opensource.google/go/x/net/+/v0.15.0:LICENSE|BSD-3-Clause +golang.org/x/net/publicsuffix|https://cs.opensource.google/go/x/net/+/v0.15.0:LICENSE|BSD-3-Clause +golang.org/x/net/webdav|https://cs.opensource.google/go/x/net/+/v0.15.0:LICENSE|BSD-3-Clause +golang.org/x/net|https://cs.opensource.google/go/x/net/+/v0.15.0:LICENSE|BSD-3-Clause +golang.org/x/oauth2|https://cs.opensource.google/go/x/oauth2/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/sync/errgroup|https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE|BSD-3-Clause +golang.org/x/sync/semaphore|https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE|BSD-3-Clause +golang.org/x/sync|https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE|BSD-3-Clause +golang.org/x/sys/cpu|https://cs.opensource.google/go/x/sys/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/sys/execabs|https://cs.opensource.google/go/x/sys/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/sys/unix|https://cs.opensource.google/go/x/sys/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/sys|https://cs.opensource.google/go/x/sys/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/term|https://cs.opensource.google/go/x/term/+/v0.12.0:LICENSE|BSD-3-Clause +golang.org/x/text|https://cs.opensource.google/go/x/text/+/v0.13.0:LICENSE|BSD-3-Clause +golang.org/x/time/rate|https://cs.opensource.google/go/x/time/+/v0.3.0:LICENSE|BSD-3-Clause +golang.org/x/tools|https://cs.opensource.google/go/x/tools/+/74c255bc:LICENSE|BSD-3-Clause +golang.org/x/xerrors|https://cs.opensource.google/go/x/xerrors/+/04be3eba:LICENSE|BSD-3-Clause +google.golang.org/api/googleapi|https://github.com/googleapis/google-api-go-client/blob/v0.138.0/LICENSE|BSD-3-Clause +google.golang.org/api/internal/third_party/uritemplates|https://github.com/googleapis/google-api-go-client/blob/v0.138.0/internal/third_party/uritemplates/LICENSE|BSD-3-Clause +google.golang.org/api|https://github.com/googleapis/google-api-go-client/blob/v0.138.0/LICENSE|BSD-3-Clause +google.golang.org/appengine|https://github.com/golang/appengine/blob/v1.6.7/LICENSE|Apache-2.0 +google.golang.org/genproto/googleapis/api|https://github.com/googleapis/go-genproto/blob/f966b187b2e5/googleapis/api/LICENSE|Apache-2.0 +google.golang.org/genproto/googleapis/rpc/status|https://github.com/googleapis/go-genproto/blob/1744710a1577/googleapis/rpc/LICENSE|Apache-2.0 +google.golang.org/genproto/googleapis/rpc|https://github.com/googleapis/go-genproto/blob/1744710a1577/googleapis/rpc/LICENSE|Apache-2.0 +google.golang.org/genproto/googleapis/type/expr|https://github.com/googleapis/go-genproto/blob/f966b187b2e5/LICENSE|Apache-2.0 +google.golang.org/genproto/googleapis/type|https://github.com/googleapis/go-genproto/blob/f966b187b2e5/LICENSE|Apache-2.0 +google.golang.org/genproto/protobuf/field_mask|https://github.com/googleapis/go-genproto/blob/f966b187b2e5/LICENSE|Apache-2.0 +google.golang.org/grpc|https://github.com/grpc/grpc-go/blob/v1.57.0/LICENSE|Apache-2.0 +google.golang.org/protobuf|https://github.com/protocolbuffers/protobuf-go/blob/v1.31.0/LICENSE|BSD-3-Clause +gopkg.in/cheggaaa/pb.v1|https://github.com/cheggaaa/pb/blob/v1.0.28/LICENSE|BSD-3-Clause +gopkg.in/go-jose/go-jose.v2/json|https://github.com/go-jose/go-jose/blob/v2.6.1/json/LICENSE|BSD-3-Clause +gopkg.in/go-jose/go-jose.v2|https://github.com/go-jose/go-jose/blob/v2.6.1/LICENSE|Apache-2.0 +gopkg.in/inf.v0|https://github.com/go-inf/inf/blob/v0.9.1/LICENSE|BSD-3-Clause +gopkg.in/ini.v1|https://github.com/go-ini/ini/blob/v1.67.0/LICENSE|Apache-2.0 +gopkg.in/resty.v1|https://github.com/go-resty/resty/blob/v1.12.0/LICENSE|MIT +gopkg.in/square/go-jose.v2/json|https://github.com/square/go-jose/blob/v2.6.0/json/LICENSE|BSD-3-Clause +gopkg.in/square/go-jose.v2|https://github.com/square/go-jose/blob/v2.6.0/LICENSE|Apache-2.0 +gopkg.in/warnings.v0|https://github.com/go-warnings/warnings/blob/v0.1.2/LICENSE|BSD-2-Clause +gopkg.in/yaml.v2|https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE|Apache-2.0 +gopkg.in/yaml.v3|https://github.com/go-yaml/yaml/blob/v3.0.1/LICENSE|MIT +inet.af/netaddr|https://github.com/inetaf/netaddr/blob/502d2d690317/LICENSE|BSD-3-Clause +k8s.io/apimachinery|https://github.com/kubernetes/apimachinery/blob/v0.28.1/LICENSE|Apache-2.0 +k8s.io/apiserver|https://github.com/kubernetes/apiserver/blob/v0.27.3/LICENSE|Apache-2.0 +k8s.io/api|https://github.com/kubernetes/api/blob/v0.28.1/LICENSE|Apache-2.0 +k8s.io/cli-runtime|https://github.com/kubernetes/cli-runtime/blob/v0.28.1/LICENSE|Apache-2.0 +k8s.io/client-go|https://github.com/kubernetes/client-go/blob/v0.28.1/LICENSE|Apache-2.0 +k8s.io/component-base|https://github.com/kubernetes/component-base/blob/v0.28.1/LICENSE|Apache-2.0 +k8s.io/klog/v2|https://github.com/kubernetes/klog/blob/v2.100.1/LICENSE|Apache-2.0 +k8s.io/kubectl|https://github.com/kubernetes/kubectl/blob/v0.28.1/LICENSE|Apache-2.0 +lukechampine.com/uint128|https://github.com/lukechampine/uint128/blob/v1.2.0/LICENSE|MIT +modernc.org/cc/v3|Unknown|Unknown +modernc.org/ccgo/v3/lib|Unknown|Unknown +modernc.org/ccgo/v3|Unknown|Unknown +modernc.org/libc/honnef.co/go/netdb|https://gitlab.com/cznic/libc/blob/v1.24.1/honnef.co/go/netdb/LICENSE|MIT +modernc.org/libc|https://gitlab.com/cznic/libc/blob/v1.24.1/LICENSE-GO|BSD-3-Clause +modernc.org/mathutil|Unknown|Unknown +modernc.org/memory|https://gitlab.com/cznic/memory/blob/v1.6.0/LICENSE-GO|BSD-3-Clause +modernc.org/opt|Unknown|Unknown +modernc.org/sqlite|https://gitlab.com/cznic/sqlite/blob/v1.25.0/LICENSE|BSD-3-Clause +modernc.org/strutil|Unknown|Unknown +modernc.org/token|https://gitlab.com/cznic/token/blob/v1.0.1/LICENSE|BSD-3-Clause +oras.land/oras-go/v2|https://github.com/oras-project/oras-go/blob/v2.3.0/LICENSE|Apache-2.0 +sigs.k8s.io/json|https://github.com/kubernetes-sigs/json/blob/bc3834ca7abd/LICENSE|Apache-2.0 +sigs.k8s.io/kustomize/api|https://github.com/kubernetes-sigs/kustomize/blob/6ce0bf390ce3/api/LICENSE|Apache-2.0 +sigs.k8s.io/kustomize/kyaml|https://github.com/kubernetes-sigs/kustomize/blob/6ce0bf390ce3/kyaml/LICENSE|Apache-2.0 +sigs.k8s.io/yaml|https://github.com/kubernetes-sigs/yaml/blob/v1.3.0/LICENSE|MIT +zotregistry.io/zot|https://github.com/project-zot/zot/blob/HEAD/LICENSE|Apache-2.0 diff --git a/build/Dockerfile-conformance b/build/Dockerfile-conformance index e0e7f10b..5378dcbc 100644 --- a/build/Dockerfile-conformance +++ b/build/Dockerfile-conformance @@ -15,7 +15,7 @@ http:\n\ storage:\n\ rootDirectory: /var/lib/registry\n\ gc: false\n\ - dedupe: false' > config.yml && cat config.yml + dedupe: false' > config.yaml && cat config.yaml # --- # Stage 2: Final image with nothing but certs, binary, and default config file @@ -23,8 +23,8 @@ storage:\n\ FROM gcr.io/distroless/base AS final COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt COPY --from=builder /go/src/github.com/project-zot/zot/bin/zot-linux-amd64 /usr/bin/zot -COPY --from=builder /go/src/github.com/project-zot/zot/config.yml /etc/zot/config.yml +COPY --from=builder /go/src/github.com/project-zot/zot/config.yaml /etc/zot/config.yaml ENTRYPOINT ["/usr/bin/zot"] EXPOSE 5000 VOLUME ["/var/lib/registry"] -CMD ["serve", "/etc/zot/config.yml"] +CMD ["serve", "/etc/zot/config.yaml"]