diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5d392a685..a6e2e15e3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -51,7 +51,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/check_doc.yml b/.github/workflows/check_doc.yml index c5fbddcec..48afa3298 100644 --- a/.github/workflows/check_doc.yml +++ b/.github/workflows/check_doc.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f921d7789..30ab2221b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: setup go uses: actions/setup-go@v5 diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 0abb784e9..4daba089b 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/experimental.yaml b/.github/workflows/experimental.yaml index fd0b76e4c..a56928fff 100644 --- a/.github/workflows/experimental.yaml +++ b/.github/workflows/experimental.yaml @@ -23,7 +23,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6d88eb2f8..db2c59183 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -89,7 +89,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -126,8 +126,6 @@ jobs: tar cfz "dist/traefik-${VERSION}.src.tar.gz" \ --exclude-vcs \ --exclude .idea \ - --exclude .travis \ - --exclude .semaphoreci \ --exclude .github \ --exclude dist . diff --git a/.github/workflows/template-webui.yaml b/.github/workflows/template-webui.yaml index e8e039fa3..b841c90f5 100644 --- a/.github/workflows/template-webui.yaml +++ b/.github/workflows/template-webui.yaml @@ -8,7 +8,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/test-integration.yaml b/.github/workflows/test-integration.yaml index cb2e74ab3..72d2fdda1 100644 --- a/.github/workflows/test-integration.yaml +++ b/.github/workflows/test-integration.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -64,7 +64,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/test-unit.yaml b/.github/workflows/test-unit.yaml index b63c2278e..eb5a7c387 100644 --- a/.github/workflows/test-unit.yaml +++ b/.github/workflows/test-unit.yaml @@ -20,7 +20,7 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -46,7 +46,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -70,7 +70,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index a43b005b2..3a4ab93a0 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -17,7 +17,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -42,7 +42,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -68,7 +68,7 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.golangci.yml b/.golangci.yml index 4413041e1..7b92f5aa8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -308,8 +308,6 @@ linters: text: 'SA1019: cfg.(SSLRedirect|SSLTemporaryRedirect|SSLHost|SSLForceHost|FeaturePolicy) is deprecated' - path: (.+)\.go$ text: 'SA1019: c.Providers.(ConsulCatalog|Consul|Nomad).Namespace is deprecated' - - path: (.+)\.go$ - text: 'SA1019: dockertypes.ContainerNode is deprecated' - path: pkg/provider/kubernetes/crd/kubernetes.go text: "Function 'loadConfigurationFromCRD' has too many statements" linters: diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml deleted file mode 100644 index 32f22b2b8..000000000 --- a/.semaphore/semaphore.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: v1.0 -name: Traefik Release - deprecated -agent: - machine: - type: f1-standard-2 - os_image: ubuntu2204 -blocks: - - name: 'Do nothing' - task: - jobs: - - name: 'Do nothing' - commands: - - echo "Do nothing" diff --git a/CHANGELOG.md b/CHANGELOG.md index 62fd2eb96..80376e94c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## [v2.11.29](https://github.com/traefik/traefik/tree/v2.11.29) (2025-08-26) +[All Commits](https://github.com/traefik/traefik/compare/v2.11.28...v2.11.29) + +**Bug fixes:** +- **[acme]** Bump github.com/go-acme/lego/v4 to v4.25.2 ([#11983](https://github.com/traefik/traefik/pull/11983) by [ldez](https://github.com/ldez)) +- **[docker]** Bump github.com/docker/docker to v28.3.3 ([#12007](https://github.com/traefik/traefik/pull/12007) by [kevinpollet](https://github.com/kevinpollet)) + +**Documentation:** +- Fix invalid links in documentation ([#11960](https://github.com/traefik/traefik/pull/11960) by [mloiseleur](https://github.com/mloiseleur)) +- Update releases docs for v3.5 ([#11949](https://github.com/traefik/traefik/pull/11949) by [jnoordsij](https://github.com/jnoordsij)) + ## [v3.5.0](https://github.com/traefik/traefik/tree/v3.5.0) (2025-07-23) [All Commits](https://github.com/traefik/traefik/compare/v3.5.0-rc1...v3.5.0) diff --git a/Makefile b/Makefile index 75d3536dc..0aaa11e56 100644 --- a/Makefile +++ b/Makefile @@ -181,11 +181,6 @@ generate-crd: generate-genconf: go run ./cmd/internal/gen/ -.PHONY: release-packages -#? release-packages: Create packages for the release -release-packages: generate-webui - $(CURDIR)/script/release-packages.sh - .PHONY: fmt #? fmt: Format the Code fmt: diff --git a/README.md b/README.md index fae31b955..711e19b8c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@

-[![Build Status SemaphoreCI](https://traefik-oss.semaphoreci.com/badges/traefik/branches/master.svg?style=shields)](https://traefik-oss.semaphoreci.com/projects/traefik) [![Docs](https://img.shields.io/badge/docs-current-brightgreen.svg)](https://doc.traefik.io/traefik) [![Go Report Card](https://goreportcard.com/badge/traefik/traefik)](https://goreportcard.com/report/traefik/traefik) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/traefik/traefik/blob/master/LICENSE.md) diff --git a/docs/content/https/acme.md b/docs/content/https/acme.md index 24cbbd21b..53b7a90c6 100644 --- a/docs/content/https/acme.md +++ b/docs/content/https/acme.md @@ -352,7 +352,7 @@ For complete details, refer to your provider's _Additional configuration_ link. | [Auroradns](https://www.pcextreme.com/dns-health-checks) | `auroradns` | `AURORA_USER_ID`, `AURORA_KEY`, `AURORA_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/auroradns) | | [Autodns](https://www.internetx.com/domains/autodns/) | `autodns` | `AUTODNS_API_USER`, `AUTODNS_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/autodns) | | [Axelname](https://axelname.ru) | `axelname` | `AXELNAME_NICKNAME`, `AXELNAME_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/axelname) | -| [Azion](https://zonomi.com) | `azion` | `AZION_PERSONAL_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/azion) | +| [Azion](https://www.azion.com/en/products/edge-dns/) | `azion` | `AZION_PERSONAL_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/azion) | | [Azure](https://azure.microsoft.com/services/dns/) (DEPRECATED) | `azure` | DEPRECATED use `azuredns` instead. | [Additional configuration](https://go-acme.github.io/lego/dns/azure) | | [AzureDNS](https://azure.microsoft.com/services/dns/) | `azuredns` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_TENANT_ID`, `AZURE_SUBSCRIPTION_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_ENVIRONMENT]`, `[AZURE_PRIVATE_ZONE]`, `[AZURE_ZONE_NAME]` | [Additional configuration](https://go-acme.github.io/lego/dns/azuredns) | | [Baidu Cloud](https://cloud.baidu.com) | `baiducloud` | `BAIDUCLOUD_ACCESS_KEY_ID`, `BAIDUCLOUD_SECRET_ACCESS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/baiducloud) | diff --git a/go.mod b/go.mod index e952f109a..84fbb8141 100644 --- a/go.mod +++ b/go.mod @@ -18,12 +18,12 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd // No tag on the repo. github.com/coreos/go-systemd/v22 v22.5.0 - github.com/docker/cli v27.1.1+incompatible - github.com/docker/docker v27.1.1+incompatible + github.com/docker/cli v28.3.3+incompatible + github.com/docker/docker v28.3.3+incompatible github.com/docker/go-connections v0.5.0 github.com/fatih/structs v1.1.0 github.com/fsnotify/fsnotify v1.9.0 - github.com/go-acme/lego/v4 v4.25.1 + github.com/go-acme/lego/v4 v4.25.2 github.com/go-kit/kit v0.13.0 github.com/go-kit/log v0.2.1 github.com/golang/protobuf v1.5.4 @@ -39,7 +39,7 @@ require ( github.com/http-wasm/http-wasm-host-go v0.7.0 github.com/influxdata/influxdb-client-go/v2 v2.7.0 github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab // No tag on the repo. - github.com/klauspost/compress v1.17.11 + github.com/klauspost/compress v1.18.0 github.com/kvtools/consul v1.0.2 github.com/kvtools/etcdv3 v1.0.2 github.com/kvtools/redis v1.1.0 @@ -49,11 +49,11 @@ require ( github.com/miekg/dns v1.1.67 github.com/mitchellh/copystructure v1.2.0 github.com/mitchellh/hashstructure v1.0.0 - github.com/mitchellh/mapstructure v1.5.0 + github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // No tag on the repo. github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pires/go-proxyproto v0.8.1 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // No tag on the repo. - github.com/prometheus/client_golang v1.19.1 + github.com/prometheus/client_golang v1.22.0 github.com/prometheus/client_model v0.6.1 github.com/quic-go/quic-go v0.54.0 github.com/redis/go-redis/v9 v9.8.0 @@ -78,7 +78,7 @@ require ( github.com/vulcand/oxy/v2 v2.0.3 github.com/vulcand/predicate v1.2.0 github.com/yuin/gopher-lua v1.1.1 - go.opentelemetry.io/collector/pdata v1.10.0 + go.opentelemetry.io/collector/pdata v1.11.0 go.opentelemetry.io/contrib/bridges/otellogrus v0.7.0 go.opentelemetry.io/contrib/propagators/autoprop v0.53.0 go.opentelemetry.io/otel v1.36.0 @@ -121,7 +121,7 @@ require ( cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.7.0 // indirect - dario.cat/mergo v1.0.0 // indirect + dario.cat/mergo v1.0.1 // indirect github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect @@ -130,7 +130,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdns v1.2.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.30 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect @@ -145,7 +145,7 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.11.7 // indirect + github.com/Microsoft/hcsshim v0.13.0 // indirect github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect @@ -177,9 +177,11 @@ require ( github.com/bytedance/sonic v1.10.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect - github.com/containerd/containerd v1.7.20 // indirect + github.com/containerd/containerd v1.7.23 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/containerd/platforms v0.2.1 // indirect + github.com/containerd/platforms v1.0.0-rc.1 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/cpuguy83/dockercfg v0.3.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -217,7 +219,6 @@ require ( github.com/go-resty/resty/v2 v2.16.5 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/go-zookeeper/zk v1.0.3 // indirect - github.com/goccy/go-json v0.10.5 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect @@ -262,7 +263,7 @@ require ( github.com/linode/linodego v1.53.0 // indirect github.com/liquidweb/liquidweb-cli v0.6.9 // indirect github.com/liquidweb/liquidweb-go v1.6.4 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailgun/minheap v0.0.0-20170619185613-3dbe6c6bf55f // indirect github.com/mailgun/multibuf v0.1.2 // indirect @@ -275,11 +276,14 @@ require ( github.com/mitchellh/go-ps v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect + github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/spdystream v0.5.0 // indirect - github.com/moby/sys/sequential v0.5.0 // indirect - github.com/moby/sys/user v0.2.0 // indirect - github.com/moby/term v0.5.0 // indirect + github.com/moby/sys/atomicwriter v0.1.0 // indirect + github.com/moby/sys/sequential v0.6.0 // indirect + github.com/moby/sys/user v0.4.0 // indirect + github.com/moby/sys/userns v0.1.0 // indirect + github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -302,15 +306,15 @@ require ( github.com/nzdjb/go-metaname v1.0.0 // indirect github.com/onsi/ginkgo v1.16.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/opencontainers/image-spec v1.1.1 // indirect github.com/ovh/go-ovh v1.9.0 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/peterhellberg/link v1.2.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/pquerna/otp v1.5.0 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.62.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/quic-go/qpack v0.5.1 // indirect github.com/regfish/regfish-dnsapi-go v0.1.1 // indirect diff --git a/go.sum b/go.sum index b9081bc9a..c95bfb7eb 100644 --- a/go.sum +++ b/go.sum @@ -37,11 +37,11 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 h1:Dy3M9aegiI7d7PF1LUdjbVigJReo+QOceYsMyFh9qoE= github.com/AdamSLevy/jsonrpc2/v14 v14.1.0/go.mod h1:ZakZtbCXxCz82NJvq7MoREtiQesnDfrtF6RFUGzQfLo= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= @@ -64,8 +64,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourceg github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0/go.mod h1:wVEOJfGTj0oPAUGA1JuRAvz/lxXQsWW16axmHPP47Bk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= @@ -112,8 +112,8 @@ github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBa github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ= -github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= +github.com/Microsoft/hcsshim v0.13.0 h1:/BcXOiS6Qi7N9XqUcv27vkIuVOkBEcWstd2pMlWSeaA= +github.com/Microsoft/hcsshim v0.13.0/go.mod h1:9KWJ/8DgU+QzYGupX4tzMhRQE8h6w90lH6HAaclpEok= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 h1:xPMsUicZ3iosVPSIP7bW5EcGUzjiiMl1OYTe14y/R24= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= @@ -287,12 +287,16 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ= -github.com/containerd/containerd v1.7.20/go.mod h1:52GsS5CwquuqPuLncsXwG0t2CiUce+KsNHJZQJvAgR0= +github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ= +github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= -github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= +github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd h1:0n+lFLh5zU0l6KSk3KpnDwfbPGAR44aRLgTbCnhRBHU= github.com/containous/alice v0.0.0-20181107144136-d83ebdd94cbd/go.mod h1:BbQgeDS5i0tNvypwEoF1oNjOJw8knRAE1DnVvjDstcQ= github.com/containous/go-http-auth v0.4.1-0.20200324110947-a37a7636d23e h1:D+uTEzDZc1Fhmd0Pq06c+O9+KkAyExw0eVmu/NOqaHU= @@ -340,10 +344,10 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnsimple/dnsimple-go/v4 v4.0.0 h1:nUCICZSyZDiiqimAAL+E8XL+0sKGks5VRki5S8XotRo= github.com/dnsimple/dnsimple-go/v4 v4.0.0/go.mod h1:AXT2yfAFOntJx6iMeo1J/zKBw0ggXFYBt4e97dqqPnc= -github.com/docker/cli v27.1.1+incompatible h1:goaZxOqs4QKxznZjjBWKONQci/MywhtRv2oNn0GkeZE= -github.com/docker/cli v27.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= -github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/cli v28.3.3+incompatible h1:fp9ZHAr1WWPGdIWBM1b3zLtgCF+83gRdVMTJsUeiyAo= +github.com/docker/cli v28.3.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= +github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -407,8 +411,8 @@ github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-acme/alidns-20150109/v4 v4.5.10 h1:epLD0VaHR5XUpiM6mjm4MzQFICrk+zpuqDz2aO1/R/k= github.com/go-acme/alidns-20150109/v4 v4.5.10/go.mod h1:qGRq8kD0xVgn82qRSQmhHwh/oWxKRjF4Db5OI4ScV5g= -github.com/go-acme/lego/v4 v4.25.1 h1:AYPUM7quPN/g2PcjjWw8sAMz3eV+Z8UWkr1kitDOyVA= -github.com/go-acme/lego/v4 v4.25.1/go.mod h1:OORYyVNZPaNdIdVYCGSBNRNZDIjhQbPuFxwGDgWj/yM= +github.com/go-acme/lego/v4 v4.25.2 h1:+D1Q+VnZrD+WJdlkgUEGHFFTcDrwGlE7q24IFtMmHDI= +github.com/go-acme/lego/v4 v4.25.2/go.mod h1:OORYyVNZPaNdIdVYCGSBNRNZDIjhQbPuFxwGDgWj/yM= github.com/go-acme/tencentclouddnspod v1.0.1208 h1:xAVy1lmg2KcKKeYmFSBQUttwc1o1S++9QTjAotGC+BM= github.com/go-acme/tencentclouddnspod v1.0.1208/go.mod h1:yxG02mkbbVd7lTb97nOn7oj09djhm7hAwxNQw4B9dpQ= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= @@ -488,8 +492,8 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= @@ -763,8 +767,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -823,8 +827,9 @@ github.com/liquidweb/liquidweb-cli v0.6.9 h1:acbIvdRauiwbxIsOCEMXGwF75aSJDbDiyAW github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ= github.com/liquidweb/liquidweb-go v1.6.4 h1:6S0m3hHSpiLqGD7AFSb7lH/W/qr1wx+tKil9fgIbjMc= github.com/liquidweb/liquidweb-go v1.6.4/go.mod h1:B934JPIIcdA+uTq2Nz5PgOtG6CuCaEvQKe/Ge/5GgZ4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= +github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -900,23 +905,29 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= +github.com/moby/go-archive v0.1.0/go.mod h1:G9B+YoujNohJmrIYFBpSd54GTUB4lt9S+xVQvsJyFuo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= -github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= -github.com/moby/sys/user v0.2.0 h1:OnpapJsRp25vkhw8TFG6OLJODNh/3rEwRWtJ3kakwRM= -github.com/moby/sys/user v0.2.0/go.mod h1:RYstrcWOJpVh+6qzUqp2bU3eaRpdiQeKGlKitaH0PM8= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -999,8 +1010,8 @@ github.com/onsi/gomega v1.36.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7y github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/ovh/go-ovh v1.9.0 h1:6K8VoL3BYjVV3In9tPJUdT7qMx9h0GExN9EXx1r2kKE= @@ -1012,8 +1023,8 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterhellberg/link v1.2.0 h1:UA5pg3Gp/E0F2WdX7GERiNrPQrM1K6CVJUUWfHa4t6c= github.com/peterhellberg/link v1.2.0/go.mod h1:gYfAh+oJgQu2SrZHg5hROVRQe1ICoK0/HHJTcE0edxc= @@ -1048,8 +1059,8 @@ github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQ github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1064,8 +1075,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1340,8 +1351,8 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/collector/pdata v1.10.0 h1:oLyPLGvPTQrcRT64ZVruwvmH/u3SHTfNo01pteS4WOE= -go.opentelemetry.io/collector/pdata v1.10.0/go.mod h1:IHxHsp+Jq/xfjORQMDJjSH6jvedOSTOyu3nbxqhWSYE= +go.opentelemetry.io/collector/pdata v1.11.0 h1:rzYyV1zfTQQz1DI9hCiaKyyaczqawN75XO9mdXmR/hE= +go.opentelemetry.io/collector/pdata v1.11.0/go.mod h1:IHxHsp+Jq/xfjORQMDJjSH6jvedOSTOyu3nbxqhWSYE= go.opentelemetry.io/contrib/bridges/otellogrus v0.7.0 h1:vPSzn6dQvdPq9ZiXFs+jUSJnzoKJkADD9yBdx/a1WgI= go.opentelemetry.io/contrib/bridges/otellogrus v0.7.0/go.mod h1:yZFNJIjn97IBhuMB3tTGPti9xasYLIdh3ChZIzyhz8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= @@ -1953,8 +1964,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/config/static/static_config.go b/pkg/config/static/static_config.go index ca515b64a..a8a0dbff0 100644 --- a/pkg/config/static/static_config.go +++ b/pkg/config/static/static_config.go @@ -357,6 +357,25 @@ func (c *Configuration) SetEffectiveConfiguration() { } } + for _, resolver := range c.CertificatesResolvers { + if resolver.ACME == nil { + continue + } + + if resolver.ACME.DNSChallenge == nil { + continue + } + + switch resolver.ACME.DNSChallenge.Provider { + case "googledomains", "cloudxns", "brandit": + log.Warn().Msgf("%s DNS provider is deprecated.", resolver.ACME.DNSChallenge.Provider) + case "dnspod": + log.Warn().Msgf("%s provider is deprecated, please use 'tencentcloud' provider instead.", resolver.ACME.DNSChallenge.Provider) + case "azure": + log.Warn().Msgf("%s provider is deprecated, please use 'azuredns' provider instead.", resolver.ACME.DNSChallenge.Provider) + } + } + c.initACMEProvider() } diff --git a/pkg/provider/docker/builder_test.go b/pkg/provider/docker/builder_test.go index 1213b7c01..c0b4f1d7f 100644 --- a/pkg/provider/docker/builder_test.go +++ b/pkg/provider/docker/builder_test.go @@ -1,22 +1,21 @@ package docker import ( - dockertypes "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/swarm" + containertypes "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" + swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/docker/go-connections/nat" ) -func containerJSON(ops ...func(*dockertypes.ContainerJSON)) dockertypes.ContainerJSON { - c := &dockertypes.ContainerJSON{ - ContainerJSONBase: &dockertypes.ContainerJSONBase{ +func containerJSON(ops ...func(*containertypes.InspectResponse)) containertypes.InspectResponse { + c := &containertypes.InspectResponse{ + ContainerJSONBase: &containertypes.ContainerJSONBase{ Name: "fake", - HostConfig: &container.HostConfig{}, + HostConfig: &containertypes.HostConfig{}, }, - Config: &container.Config{}, - NetworkSettings: &dockertypes.NetworkSettings{ - NetworkSettingsBase: dockertypes.NetworkSettingsBase{}, + Config: &containertypes.Config{}, + NetworkSettings: &containertypes.NetworkSettings{ + NetworkSettingsBase: containertypes.NetworkSettingsBase{}, }, } @@ -27,58 +26,50 @@ func containerJSON(ops ...func(*dockertypes.ContainerJSON)) dockertypes.Containe return *c } -func name(name string) func(*dockertypes.ContainerJSON) { - return func(c *dockertypes.ContainerJSON) { +func name(name string) func(*containertypes.InspectResponse) { + return func(c *containertypes.InspectResponse) { c.ContainerJSONBase.Name = name } } -func networkMode(mode string) func(*dockertypes.ContainerJSON) { - return func(c *dockertypes.ContainerJSON) { - c.ContainerJSONBase.HostConfig.NetworkMode = container.NetworkMode(mode) +func networkMode(mode string) func(*containertypes.InspectResponse) { + return func(c *containertypes.InspectResponse) { + c.ContainerJSONBase.HostConfig.NetworkMode = containertypes.NetworkMode(mode) } } -func nodeIP(ip string) func(*dockertypes.ContainerJSON) { - return func(c *dockertypes.ContainerJSON) { - c.ContainerJSONBase.Node = &dockertypes.ContainerNode{ - IPAddress: ip, - } - } -} - -func ports(portMap nat.PortMap) func(*dockertypes.ContainerJSON) { - return func(c *dockertypes.ContainerJSON) { +func ports(portMap nat.PortMap) func(*containertypes.InspectResponse) { + return func(c *containertypes.InspectResponse) { c.NetworkSettings.NetworkSettingsBase.Ports = portMap } } -func withNetwork(name string, ops ...func(*network.EndpointSettings)) func(*dockertypes.ContainerJSON) { - return func(c *dockertypes.ContainerJSON) { +func withNetwork(name string, ops ...func(*networktypes.EndpointSettings)) func(*containertypes.InspectResponse) { + return func(c *containertypes.InspectResponse) { if c.NetworkSettings.Networks == nil { - c.NetworkSettings.Networks = map[string]*network.EndpointSettings{} + c.NetworkSettings.Networks = map[string]*networktypes.EndpointSettings{} } - c.NetworkSettings.Networks[name] = &network.EndpointSettings{} + c.NetworkSettings.Networks[name] = &networktypes.EndpointSettings{} for _, op := range ops { op(c.NetworkSettings.Networks[name]) } } } -func ipv4(ip string) func(*network.EndpointSettings) { - return func(s *network.EndpointSettings) { +func ipv4(ip string) func(*networktypes.EndpointSettings) { + return func(s *networktypes.EndpointSettings) { s.IPAddress = ip } } -func ipv6(ip string) func(*network.EndpointSettings) { - return func(s *network.EndpointSettings) { +func ipv6(ip string) func(*networktypes.EndpointSettings) { + return func(s *networktypes.EndpointSettings) { s.GlobalIPv6Address = ip } } -func swarmTask(id string, ops ...func(*swarm.Task)) swarm.Task { - task := &swarm.Task{ +func swarmTask(id string, ops ...func(*swarmtypes.Task)) swarmtypes.Task { + task := &swarmtypes.Task{ ID: id, } @@ -89,22 +80,28 @@ func swarmTask(id string, ops ...func(*swarm.Task)) swarm.Task { return *task } -func taskSlot(slot int) func(*swarm.Task) { - return func(task *swarm.Task) { +func taskSlot(slot int) func(*swarmtypes.Task) { + return func(task *swarmtypes.Task) { task.Slot = slot } } -func taskNetworkAttachment(id, name, driver string, addresses []string) func(*swarm.Task) { - return func(task *swarm.Task) { - task.NetworksAttachments = append(task.NetworksAttachments, swarm.NetworkAttachment{ - Network: swarm.Network{ +func taskNodeID(id string) func(*swarmtypes.Task) { + return func(task *swarmtypes.Task) { + task.NodeID = id + } +} + +func taskNetworkAttachment(id, name, driver string, addresses []string) func(*swarmtypes.Task) { + return func(task *swarmtypes.Task) { + task.NetworksAttachments = append(task.NetworksAttachments, swarmtypes.NetworkAttachment{ + Network: swarmtypes.Network{ ID: id, - Spec: swarm.NetworkSpec{ - Annotations: swarm.Annotations{ + Spec: swarmtypes.NetworkSpec{ + Annotations: swarmtypes.Annotations{ Name: name, }, - DriverConfiguration: &swarm.Driver{ + DriverConfiguration: &swarmtypes.Driver{ Name: driver, }, }, @@ -114,9 +111,9 @@ func taskNetworkAttachment(id, name, driver string, addresses []string) func(*sw } } -func taskStatus(ops ...func(*swarm.TaskStatus)) func(*swarm.Task) { - return func(task *swarm.Task) { - status := &swarm.TaskStatus{} +func taskStatus(ops ...func(*swarmtypes.TaskStatus)) func(*swarmtypes.Task) { + return func(task *swarmtypes.Task) { + status := &swarmtypes.TaskStatus{} for _, op := range ops { op(status) @@ -126,25 +123,25 @@ func taskStatus(ops ...func(*swarm.TaskStatus)) func(*swarm.Task) { } } -func taskState(state swarm.TaskState) func(*swarm.TaskStatus) { - return func(status *swarm.TaskStatus) { +func taskState(state swarmtypes.TaskState) func(*swarmtypes.TaskStatus) { + return func(status *swarmtypes.TaskStatus) { status.State = state } } -func taskContainerStatus(id string) func(*swarm.TaskStatus) { - return func(status *swarm.TaskStatus) { - status.ContainerStatus = &swarm.ContainerStatus{ +func taskContainerStatus(id string) func(*swarmtypes.TaskStatus) { + return func(status *swarmtypes.TaskStatus) { + status.ContainerStatus = &swarmtypes.ContainerStatus{ ContainerID: id, } } } -func swarmService(ops ...func(*swarm.Service)) swarm.Service { - service := &swarm.Service{ +func swarmService(ops ...func(*swarmtypes.Service)) swarmtypes.Service { + service := &swarmtypes.Service{ ID: "serviceID", - Spec: swarm.ServiceSpec{ - Annotations: swarm.Annotations{ + Spec: swarmtypes.ServiceSpec{ + Annotations: swarmtypes.Annotations{ Name: "defaultServiceName", }, }, @@ -157,21 +154,21 @@ func swarmService(ops ...func(*swarm.Service)) swarm.Service { return *service } -func serviceName(name string) func(service *swarm.Service) { - return func(service *swarm.Service) { +func serviceName(name string) func(service *swarmtypes.Service) { + return func(service *swarmtypes.Service) { service.Spec.Annotations.Name = name } } -func serviceLabels(labels map[string]string) func(service *swarm.Service) { - return func(service *swarm.Service) { +func serviceLabels(labels map[string]string) func(service *swarmtypes.Service) { + return func(service *swarmtypes.Service) { service.Spec.Annotations.Labels = labels } } -func withEndpoint(ops ...func(*swarm.Endpoint)) func(*swarm.Service) { - return func(service *swarm.Service) { - endpoint := &swarm.Endpoint{} +func withEndpoint(ops ...func(*swarmtypes.Endpoint)) func(*swarmtypes.Service) { + return func(service *swarmtypes.Service) { + endpoint := &swarmtypes.Endpoint{} for _, op := range ops { op(endpoint) @@ -181,21 +178,21 @@ func withEndpoint(ops ...func(*swarm.Endpoint)) func(*swarm.Service) { } } -func virtualIP(networkID, addr string) func(*swarm.Endpoint) { - return func(endpoint *swarm.Endpoint) { +func virtualIP(networkID, addr string) func(*swarmtypes.Endpoint) { + return func(endpoint *swarmtypes.Endpoint) { if endpoint.VirtualIPs == nil { - endpoint.VirtualIPs = []swarm.EndpointVirtualIP{} + endpoint.VirtualIPs = []swarmtypes.EndpointVirtualIP{} } - endpoint.VirtualIPs = append(endpoint.VirtualIPs, swarm.EndpointVirtualIP{ + endpoint.VirtualIPs = append(endpoint.VirtualIPs, swarmtypes.EndpointVirtualIP{ NetworkID: networkID, Addr: addr, }) } } -func withEndpointSpec(ops ...func(*swarm.EndpointSpec)) func(*swarm.Service) { - return func(service *swarm.Service) { - endpointSpec := &swarm.EndpointSpec{} +func withEndpointSpec(ops ...func(*swarmtypes.EndpointSpec)) func(*swarmtypes.Service) { + return func(service *swarmtypes.Service) { + endpointSpec := &swarmtypes.EndpointSpec{} for _, op := range ops { op(endpointSpec) @@ -205,10 +202,10 @@ func withEndpointSpec(ops ...func(*swarm.EndpointSpec)) func(*swarm.Service) { } } -func modeDNSRR(spec *swarm.EndpointSpec) { - spec.Mode = swarm.ResolutionModeDNSRR +func modeDNSRR(spec *swarmtypes.EndpointSpec) { + spec.Mode = swarmtypes.ResolutionModeDNSRR } -func modeVIP(spec *swarm.EndpointSpec) { - spec.Mode = swarm.ResolutionModeVIP +func modeVIP(spec *swarmtypes.EndpointSpec) { + spec.Mode = swarmtypes.ResolutionModeVIP } diff --git a/pkg/provider/docker/config.go b/pkg/provider/docker/config.go index b3bbe2411..7663511be 100644 --- a/pkg/provider/docker/config.go +++ b/pkg/provider/docker/config.go @@ -7,7 +7,7 @@ import ( "net" "strings" - dockertypes "github.com/docker/docker/api/types" + containertypes "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" "github.com/docker/go-connections/nat" "github.com/rs/zerolog/log" @@ -114,7 +114,7 @@ func (p *DynConfBuilder) buildTCPServiceConfiguration(ctx context.Context, conta } } - if container.Health != "" && container.Health != dockertypes.Healthy { + if container.Health != "" && container.Health != containertypes.Healthy { return nil } @@ -138,7 +138,7 @@ func (p *DynConfBuilder) buildUDPServiceConfiguration(ctx context.Context, conta } } - if container.Health != "" && container.Health != dockertypes.Healthy { + if container.Health != "" && container.Health != containertypes.Healthy { return nil } @@ -164,7 +164,7 @@ func (p *DynConfBuilder) buildServiceConfiguration(ctx context.Context, containe } } - if container.Health != "" && container.Health != dockertypes.Healthy { + if container.Health != "" && container.Health != containertypes.Healthy { return nil } @@ -196,7 +196,7 @@ func (p *DynConfBuilder) keepContainer(ctx context.Context, container dockerData return false } - if !p.AllowEmptyServices && container.Health != "" && container.Health != dockertypes.Healthy { + if !p.AllowEmptyServices && container.Health != "" && container.Health != containertypes.Healthy { logger.Debug().Msg("Filtering unhealthy or starting container") return false } @@ -344,8 +344,8 @@ func (p *DynConfBuilder) getIPAddress(ctx context.Context, container dockerData) } if container.NetworkSettings.NetworkMode.IsHost() { - if container.Node != nil && container.Node.IPAddress != "" { - return container.Node.IPAddress + if container.NodeIP != "" { + return container.NodeIP } if host, err := net.LookupHost("host.docker.internal"); err == nil { return host[0] diff --git a/pkg/provider/docker/config_test.go b/pkg/provider/docker/config_test.go index 8f389edbf..e54b980c3 100644 --- a/pkg/provider/docker/config_test.go +++ b/pkg/provider/docker/config_test.go @@ -5,9 +5,9 @@ import ( "testing" "time" - docker "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/swarm" + containertypes "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" + swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/docker/go-connections/nat" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -2746,7 +2746,7 @@ func TestDynConfBuilder_build(t *testing.T) { { ServiceName: "Test", Name: "Test", - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, }, }, expected: &dynamic.Configuration{ @@ -2778,7 +2778,7 @@ func TestDynConfBuilder_build(t *testing.T) { { ServiceName: "Test", Name: "Test", - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, }, }, expected: &dynamic.Configuration{ @@ -2825,7 +2825,7 @@ func TestDynConfBuilder_build(t *testing.T) { { ServiceName: "Test", Name: "Test", - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, Labels: map[string]string{ "traefik.tcp.routers.foo.rule": "HostSNI(`foo.bar`)", }, @@ -2860,7 +2860,7 @@ func TestDynConfBuilder_build(t *testing.T) { { ServiceName: "Test", Name: "Test", - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, Labels: map[string]string{ "traefik.tcp.routers.foo.rule": "HostSNI(`foo.bar`)", }, @@ -2903,7 +2903,7 @@ func TestDynConfBuilder_build(t *testing.T) { { ServiceName: "Test", Name: "Test", - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, Labels: map[string]string{ "traefik.udp.routers.foo": "true", }, @@ -2941,7 +2941,7 @@ func TestDynConfBuilder_build(t *testing.T) { Labels: map[string]string{ "traefik.udp.routers.foo": "true", }, - Health: docker.Unhealthy, + Health: containertypes.Unhealthy, }, }, expected: &dynamic.Configuration{ @@ -3944,7 +3944,7 @@ func TestDynConfBuilder_getIPPort_docker(t *testing.T) { testCases := []struct { desc string - container docker.ContainerJSON + container containertypes.InspectResponse serverPort string expected expected }{ @@ -4115,8 +4115,9 @@ func TestDynConfBuilder_getIPPort_docker(t *testing.T) { func TestDynConfBuilder_getIPAddress_docker(t *testing.T) { testCases := []struct { desc string - container docker.ContainerJSON + container containertypes.InspectResponse network string + nodeIP string expected string }{ { @@ -4192,10 +4193,10 @@ func TestDynConfBuilder_getIPAddress_docker(t *testing.T) { expected: "127.0.0.1", }, { - desc: "no network, no network label, mode host, node IP", + desc: "no network, no network label, mode host, node IP", + nodeIP: "10.0.0.5", container: containerJSON( networkMode("host"), - nodeIP("10.0.0.5"), ), expected: "10.0.0.5", }, @@ -4210,6 +4211,9 @@ func TestDynConfBuilder_getIPAddress_docker(t *testing.T) { } dData := parseContainer(test.container) + if test.nodeIP != "" { + dData.NodeIP = test.nodeIP + } dData.ExtraConf.Network = conf.Network if len(test.network) > 0 { @@ -4226,14 +4230,14 @@ func TestDynConfBuilder_getIPAddress_docker(t *testing.T) { func TestDynConfBuilder_getIPAddress_swarm(t *testing.T) { testCases := []struct { - service swarm.Service + service swarmtypes.Service expected string - networks map[string]*network.Summary + networks map[string]*networktypes.Summary }{ { service: swarmService(withEndpointSpec(modeDNSRR)), expected: "", - networks: map[string]*network.Summary{}, + networks: map[string]*networktypes.Summary{}, }, { service: swarmService( @@ -4241,7 +4245,7 @@ func TestDynConfBuilder_getIPAddress_swarm(t *testing.T) { withEndpoint(virtualIP("1", "10.11.12.13/24")), ), expected: "10.11.12.13", - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "foo", }, @@ -4259,7 +4263,7 @@ func TestDynConfBuilder_getIPAddress_swarm(t *testing.T) { ), ), expected: "10.11.12.99", - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "foonet", }, diff --git a/pkg/provider/docker/data.go b/pkg/provider/docker/data.go index 509f2431d..4c42d396e 100644 --- a/pkg/provider/docker/data.go +++ b/pkg/provider/docker/data.go @@ -1,8 +1,7 @@ package docker import ( - dockertypes "github.com/docker/docker/api/types" - dockercontainertypes "github.com/docker/docker/api/types/container" + containertypes "github.com/docker/docker/api/types/container" "github.com/docker/go-connections/nat" ) @@ -14,13 +13,13 @@ type dockerData struct { Labels map[string]string // List of labels set to container or service NetworkSettings networkSettings Health string - Node *dockertypes.ContainerNode + NodeIP string // Only filled in Swarm mode. ExtraConf configuration } // NetworkSettings holds the networks data to the provider. type networkSettings struct { - NetworkMode dockercontainertypes.NetworkMode + NetworkMode containertypes.NetworkMode Ports nat.PortMap Networks map[string]*networkData } diff --git a/pkg/provider/docker/pdocker.go b/pkg/provider/docker/pdocker.go index 44ff3470d..bcd5ce96e 100644 --- a/pkg/provider/docker/pdocker.go +++ b/pkg/provider/docker/pdocker.go @@ -9,7 +9,6 @@ import ( "time" "github.com/cenkalti/backoff/v4" - dockertypes "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" eventtypes "github.com/docker/docker/api/types/events" "github.com/docker/docker/api/types/filters" @@ -104,7 +103,7 @@ func (p *Provider) Provide(configurationChan chan<- dynamic.Message, pool *safe. if p.Watch { f := filters.NewArgs() f.Add("type", "container") - options := dockertypes.EventsOptions{ + options := eventtypes.ListOptions{ Filters: f, } diff --git a/pkg/provider/docker/pswarm.go b/pkg/provider/docker/pswarm.go index 07ad3cabc..f665b3ef7 100644 --- a/pkg/provider/docker/pswarm.go +++ b/pkg/provider/docker/pswarm.go @@ -8,8 +8,8 @@ import ( "time" "github.com/cenkalti/backoff/v4" - dockertypes "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" + networktypes "github.com/docker/docker/api/types/network" swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/api/types/versions" "github.com/docker/docker/client" @@ -161,7 +161,7 @@ func (p *SwarmProvider) Provide(configurationChan chan<- dynamic.Message, pool * func (p *SwarmProvider) listServices(ctx context.Context, dockerClient client.APIClient) ([]dockerData, error) { logger := log.Ctx(ctx) - serviceList, err := dockerClient.ServiceList(ctx, dockertypes.ServiceListOptions{}) + serviceList, err := dockerClient.ServiceList(ctx, swarmtypes.ServiceListOptions{}) if err != nil { return nil, err } @@ -179,13 +179,13 @@ func (p *SwarmProvider) listServices(ctx context.Context, dockerClient client.AP networkListArgs.Add("driver", "overlay") } - networkList, err := dockerClient.NetworkList(ctx, dockertypes.NetworkListOptions{Filters: networkListArgs}) + networkList, err := dockerClient.NetworkList(ctx, networktypes.ListOptions{Filters: networkListArgs}) if err != nil { logger.Debug().Err(err).Msg("Failed to network inspect on client for docker") return nil, err } - networkMap := make(map[string]*dockertypes.NetworkResource) + networkMap := make(map[string]*networktypes.Summary) for _, network := range networkList { networkMap[network.ID] = &network } @@ -218,7 +218,7 @@ func (p *SwarmProvider) listServices(ctx context.Context, dockerClient client.AP return dockerDataList, err } -func (p *SwarmProvider) parseService(ctx context.Context, service swarmtypes.Service, networkMap map[string]*dockertypes.NetworkResource) (dockerData, error) { +func (p *SwarmProvider) parseService(ctx context.Context, service swarmtypes.Service, networkMap map[string]*networktypes.Summary) (dockerData, error) { logger := log.Ctx(ctx) dData := dockerData{ @@ -267,13 +267,13 @@ func (p *SwarmProvider) parseService(ctx context.Context, service swarmtypes.Ser } func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID string, - serviceDockerData dockerData, networkMap map[string]*dockertypes.NetworkResource, isGlobalSvc bool, + serviceDockerData dockerData, networkMap map[string]*networktypes.Summary, isGlobalSvc bool, ) ([]dockerData, error) { serviceIDFilter := filters.NewArgs() serviceIDFilter.Add("service", serviceID) serviceIDFilter.Add("desired-state", "running") - taskList, err := dockerClient.TaskList(ctx, dockertypes.TaskListOptions{Filters: serviceIDFilter}) + taskList, err := dockerClient.TaskList(ctx, swarmtypes.TaskListOptions{Filters: serviceIDFilter}) if err != nil { return nil, err } @@ -283,7 +283,11 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str if task.Status.State != swarmtypes.TaskStateRunning { continue } - dData := parseTasks(ctx, task, serviceDockerData, networkMap, isGlobalSvc) + dData, err := parseTasks(ctx, dockerClient, task, serviceDockerData, networkMap, isGlobalSvc) + if err != nil { + log.Ctx(ctx).Warn().Err(err).Msgf("Error while parsing task %s", getServiceName(dData)) + continue + } if len(dData.NetworkSettings.Networks) > 0 { dockerDataList = append(dockerDataList, dData) } @@ -291,9 +295,9 @@ func listTasks(ctx context.Context, dockerClient client.APIClient, serviceID str return dockerDataList, err } -func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData dockerData, - networkMap map[string]*dockertypes.NetworkResource, isGlobalSvc bool, -) dockerData { +func parseTasks(ctx context.Context, dockerClient client.APIClient, task swarmtypes.Task, serviceDockerData dockerData, + networkMap map[string]*networktypes.Summary, isGlobalSvc bool, +) (dockerData, error) { dData := dockerData{ ID: task.ID, ServiceName: serviceDockerData.Name, @@ -307,6 +311,14 @@ func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData doc dData.Name = serviceDockerData.Name + "." + task.ID } + if task.NodeID != "" { + node, _, err := dockerClient.NodeInspectWithRaw(ctx, task.NodeID) + if err != nil { + return dockerData{}, fmt.Errorf("inspecting node %s: %w", task.NodeID, err) + } + dData.NodeIP = node.Status.Addr + } + if task.NetworksAttachments != nil { dData.NetworkSettings.Networks = make(map[string]*networkData) for _, virtualIP := range task.NetworksAttachments { @@ -328,5 +340,5 @@ func parseTasks(ctx context.Context, task swarmtypes.Task, serviceDockerData doc } } } - return dData + return dData, nil } diff --git a/pkg/provider/docker/pswarm_mock_test.go b/pkg/provider/docker/pswarm_mock_test.go index 83eb61b3b..8793982b9 100644 --- a/pkg/provider/docker/pswarm_mock_test.go +++ b/pkg/provider/docker/pswarm_mock_test.go @@ -4,35 +4,47 @@ import ( "context" dockertypes "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/swarm" + containertypes "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" + swarmtypes "github.com/docker/docker/api/types/swarm" dockerclient "github.com/docker/docker/client" ) type fakeTasksClient struct { dockerclient.APIClient - tasks []swarm.Task - container dockertypes.ContainerJSON + tasks []swarmtypes.Task + container containertypes.InspectResponse err error } -func (c *fakeTasksClient) TaskList(ctx context.Context, options dockertypes.TaskListOptions) ([]swarm.Task, error) { +func (c *fakeTasksClient) TaskList(ctx context.Context, options swarmtypes.TaskListOptions) ([]swarmtypes.Task, error) { return c.tasks, c.err } -func (c *fakeTasksClient) ContainerInspect(ctx context.Context, container string) (dockertypes.ContainerJSON, error) { +func (c *fakeTasksClient) ContainerInspect(ctx context.Context, container string) (containertypes.InspectResponse, error) { return c.container, c.err } type fakeServicesClient struct { dockerclient.APIClient dockerVersion string - networks []dockertypes.NetworkResource - services []swarm.Service - tasks []swarm.Task + networks []networktypes.Summary + nodes []swarmtypes.Node + services []swarmtypes.Service + tasks []swarmtypes.Task err error } -func (c *fakeServicesClient) ServiceList(ctx context.Context, options dockertypes.ServiceListOptions) ([]swarm.Service, error) { +func (c *fakeServicesClient) NodeInspectWithRaw(ctx context.Context, nodeID string) (swarmtypes.Node, []byte, error) { + for _, node := range c.nodes { + if node.ID == nodeID { + return node, nil, nil + } + } + return swarmtypes.Node{}, nil, c.err +} + +func (c *fakeServicesClient) ServiceList(ctx context.Context, options swarmtypes.ServiceListOptions) ([]swarmtypes.Service, error) { return c.services, c.err } @@ -40,10 +52,10 @@ func (c *fakeServicesClient) ServerVersion(ctx context.Context) (dockertypes.Ver return dockertypes.Version{APIVersion: c.dockerVersion}, c.err } -func (c *fakeServicesClient) NetworkList(ctx context.Context, options dockertypes.NetworkListOptions) ([]dockertypes.NetworkResource, error) { +func (c *fakeServicesClient) NetworkList(ctx context.Context, options networktypes.ListOptions) ([]networktypes.Summary, error) { return c.networks, c.err } -func (c *fakeServicesClient) TaskList(ctx context.Context, options dockertypes.TaskListOptions) ([]swarm.Task, error) { +func (c *fakeServicesClient) TaskList(ctx context.Context, options swarmtypes.TaskListOptions) ([]swarmtypes.Task, error) { return c.tasks, c.err } diff --git a/pkg/provider/docker/pswarm_test.go b/pkg/provider/docker/pswarm_test.go index 0f9c72d5f..a4fd9692e 100644 --- a/pkg/provider/docker/pswarm_test.go +++ b/pkg/provider/docker/pswarm_test.go @@ -5,32 +5,32 @@ import ( "testing" "time" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/swarm" + networktypes "github.com/docker/docker/api/types/network" + swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestListTasks(t *testing.T) { testCases := []struct { - service swarm.Service - tasks []swarm.Task + service swarmtypes.Service + tasks []swarmtypes.Task isGlobalSVC bool expectedTasks []string - networks map[string]*network.Summary + networks map[string]*networktypes.Summary }{ { service: swarmService(serviceName("container")), - tasks: []swarm.Task{ + tasks: []swarmtypes.Task{ swarmTask("id1", taskSlot(1), taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.1"}), - taskStatus(taskState(swarm.TaskStateRunning)), + taskStatus(taskState(swarmtypes.TaskStateRunning)), ), swarmTask("id2", taskSlot(2), taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.2"}), - taskStatus(taskState(swarm.TaskStatePending)), + taskStatus(taskState(swarmtypes.TaskStatePending)), ), swarmTask("id3", taskSlot(3), @@ -39,12 +39,12 @@ func TestListTasks(t *testing.T) { swarmTask("id4", taskSlot(4), taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.4"}), - taskStatus(taskState(swarm.TaskStateRunning)), + taskStatus(taskState(swarmtypes.TaskStateRunning)), ), swarmTask("id5", taskSlot(5), taskNetworkAttachment("1", "network1", "overlay", []string{"127.0.0.5"}), - taskStatus(taskState(swarm.TaskStateFailed)), + taskStatus(taskState(swarmtypes.TaskStateFailed)), ), }, isGlobalSVC: false, @@ -52,7 +52,7 @@ func TestListTasks(t *testing.T) { "container.1", "container.4", }, - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "foo", }, @@ -89,15 +89,15 @@ func TestListTasks(t *testing.T) { func TestSwarmProvider_listServices(t *testing.T) { testCases := []struct { desc string - services []swarm.Service - tasks []swarm.Task + services []swarmtypes.Service + tasks []swarmtypes.Task dockerVersion string - networks []network.Summary + networks []networktypes.Summary expectedServices []string }{ { desc: "Should return no service due to no networks defined", - services: []swarm.Service{ + services: []swarmtypes.Service{ swarmService( serviceName("service1"), serviceLabels(map[string]string{ @@ -118,12 +118,12 @@ func TestSwarmProvider_listServices(t *testing.T) { withEndpointSpec(modeDNSRR)), }, dockerVersion: "1.30", - networks: []network.Summary{}, + networks: []networktypes.Summary{}, expectedServices: []string{}, }, { desc: "Should return only service1", - services: []swarm.Service{ + services: []swarmtypes.Service{ swarmService( serviceName("service1"), serviceLabels(map[string]string{ @@ -144,7 +144,7 @@ func TestSwarmProvider_listServices(t *testing.T) { withEndpointSpec(modeDNSRR)), }, dockerVersion: "1.30", - networks: []network.Summary{ + networks: []networktypes.Summary{ { Name: "network_name", ID: "yk6l57rfwizjzxxzftn4amaot", @@ -156,8 +156,8 @@ func TestSwarmProvider_listServices(t *testing.T) { Ingress: false, ConfigOnly: false, Options: map[string]string{ - "com.docker.network.driver.overlay.vxlanid_list": "4098", - "com.docker.network.enable_ipv6": "false", + "com.docker.networktypes.driver.overlay.vxlanid_list": "4098", + "com.docker.networktypes.enable_ipv6": "false", }, Labels: map[string]string{ "com.docker.stack.namespace": "test", @@ -170,7 +170,7 @@ func TestSwarmProvider_listServices(t *testing.T) { }, { desc: "Should return service1 and service2", - services: []swarm.Service{ + services: []swarmtypes.Service{ swarmService( serviceName("service1"), serviceLabels(map[string]string{ @@ -188,18 +188,18 @@ func TestSwarmProvider_listServices(t *testing.T) { }), withEndpointSpec(modeDNSRR)), }, - tasks: []swarm.Task{ + tasks: []swarmtypes.Task{ swarmTask("id1", taskNetworkAttachment("yk6l57rfwizjzxxzftn4amaot", "network_name", "overlay", []string{"127.0.0.1"}), - taskStatus(taskState(swarm.TaskStateRunning)), + taskStatus(taskState(swarmtypes.TaskStateRunning)), ), swarmTask("id2", taskNetworkAttachment("yk6l57rfwizjzxxzftn4amaot", "network_name", "overlay", []string{"127.0.0.1"}), - taskStatus(taskState(swarm.TaskStateRunning)), + taskStatus(taskState(swarmtypes.TaskStateRunning)), ), }, dockerVersion: "1.30", - networks: []network.Summary{ + networks: []networktypes.Summary{ { Name: "network_name", ID: "yk6l57rfwizjzxxzftn4amaot", @@ -211,8 +211,8 @@ func TestSwarmProvider_listServices(t *testing.T) { Ingress: false, ConfigOnly: false, Options: map[string]string{ - "com.docker.network.driver.overlay.vxlanid_list": "4098", - "com.docker.network.enable_ipv6": "false", + "com.docker.networktypes.driver.overlay.vxlanid_list": "4098", + "com.docker.networktypes.enable_ipv6": "false", }, Labels: map[string]string{ "com.docker.stack.namespace": "test", @@ -253,15 +253,16 @@ func TestSwarmProvider_listServices(t *testing.T) { func TestSwarmProvider_parseService_task(t *testing.T) { testCases := []struct { - service swarm.Service - tasks []swarm.Task + service swarmtypes.Service + tasks []swarmtypes.Task + nodes []swarmtypes.Node isGlobalSVC bool expected map[string]dockerData - networks map[string]*network.Summary + networks map[string]*networktypes.Summary }{ { service: swarmService(serviceName("container")), - tasks: []swarm.Task{ + tasks: []swarmtypes.Task{ swarmTask("id1", taskSlot(1)), swarmTask("id2", taskSlot(2)), swarmTask("id3", taskSlot(3)), @@ -278,7 +279,7 @@ func TestSwarmProvider_parseService_task(t *testing.T) { Name: "container.3", }, }, - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "foo", }, @@ -286,7 +287,7 @@ func TestSwarmProvider_parseService_task(t *testing.T) { }, { service: swarmService(serviceName("container")), - tasks: []swarm.Task{ + tasks: []swarmtypes.Task{ swarmTask("id1"), swarmTask("id2"), swarmTask("id3"), @@ -303,7 +304,7 @@ func TestSwarmProvider_parseService_task(t *testing.T) { Name: "container.id3", }, }, - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "foo", }, @@ -317,12 +318,12 @@ func TestSwarmProvider_parseService_task(t *testing.T) { virtualIP("1", ""), ), ), - tasks: []swarm.Task{ + tasks: []swarmtypes.Task{ swarmTask( "id1", taskNetworkAttachment("1", "vlan", "macvlan", []string{"127.0.0.1"}), taskStatus( - taskState(swarm.TaskStateRunning), + taskState(swarmtypes.TaskStateRunning), taskContainerStatus("c1"), ), ), @@ -341,12 +342,39 @@ func TestSwarmProvider_parseService_task(t *testing.T) { }, }, }, - networks: map[string]*network.Summary{ + networks: map[string]*networktypes.Summary{ "1": { Name: "vlan", }, }, }, + { + service: swarmService(serviceName("container")), + tasks: []swarmtypes.Task{ + swarmTask("id1", + taskSlot(1), + taskNodeID("id1"), + ), + }, + nodes: []swarmtypes.Node{ + { + Status: swarmtypes.NodeStatus{ + Addr: "10.11.12.13", + }, + }, + }, + expected: map[string]dockerData{ + "id1": { + Name: "container.1", + NodeIP: "10.11.12.13", + }, + }, + networks: map[string]*networktypes.Summary{ + "1": { + Name: "foo", + }, + }, + }, } for caseID, test := range testCases { @@ -359,8 +387,12 @@ func TestSwarmProvider_parseService_task(t *testing.T) { dData, err := p.parseService(t.Context(), test.service, test.networks) require.NoError(t, err) + dockerClient := &fakeServicesClient{tasks: test.tasks} + for _, task := range test.tasks { - taskDockerData := parseTasks(t.Context(), task, dData, test.networks, test.isGlobalSVC) + taskDockerData, err := parseTasks(t.Context(), dockerClient, task, dData, test.networks, test.isGlobalSVC) + require.NoError(t, err) + expected := test.expected[task.ID] assert.Equal(t, expected.Name, taskDockerData.Name) } diff --git a/pkg/provider/docker/shared.go b/pkg/provider/docker/shared.go index 97c8d519b..8d2ef4001 100644 --- a/pkg/provider/docker/shared.go +++ b/pkg/provider/docker/shared.go @@ -9,7 +9,7 @@ import ( "time" "github.com/docker/cli/cli/connhelper" - dockertypes "github.com/docker/docker/api/types" + containertypes "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" "github.com/docker/go-connections/nat" "github.com/docker/go-connections/sockets" @@ -52,7 +52,7 @@ func inspectContainers(ctx context.Context, dockerClient client.ContainerAPIClie return dockerData{} } -func parseContainer(container dockertypes.ContainerJSON) dockerData { +func parseContainer(container containertypes.InspectResponse) dockerData { dData := dockerData{ NetworkSettings: networkSettings{}, } @@ -61,7 +61,6 @@ func parseContainer(container dockertypes.ContainerJSON) dockerData { dData.ID = container.ContainerJSONBase.ID dData.Name = container.ContainerJSONBase.Name dData.ServiceName = dData.Name // Default ServiceName to be the container's Name. - dData.Node = container.ContainerJSONBase.Node if container.ContainerJSONBase.HostConfig != nil { dData.NetworkSettings.NetworkMode = container.ContainerJSONBase.HostConfig.NetworkMode diff --git a/pkg/provider/docker/shared_test.go b/pkg/provider/docker/shared_test.go index d6c51afd8..a5cf68def 100644 --- a/pkg/provider/docker/shared_test.go +++ b/pkg/provider/docker/shared_test.go @@ -4,8 +4,9 @@ import ( "strconv" "testing" - docker "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/swarm" + containertypes "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" + swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/docker/go-connections/nat" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -14,7 +15,7 @@ import ( func Test_getPort_docker(t *testing.T) { testCases := []struct { desc string - container docker.ContainerJSON + container containertypes.InspectResponse serverPort string expected string }{ @@ -78,16 +79,16 @@ func Test_getPort_docker(t *testing.T) { func Test_getPort_swarm(t *testing.T) { testCases := []struct { - service swarm.Service + service swarmtypes.Service serverPort string - networks map[string]*docker.NetworkResource + networks map[string]*networktypes.Summary expected string }{ { service: swarmService( withEndpointSpec(modeDNSRR), ), - networks: map[string]*docker.NetworkResource{}, + networks: map[string]*networktypes.Summary{}, serverPort: "8080", expected: "8080", }, diff --git a/script/release-packages.sh b/script/release-packages.sh deleted file mode 100755 index 18ed92d3b..000000000 --- a/script/release-packages.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -set -e - -if [ -n "${SEMAPHORE_GIT_TAG_NAME}" ]; then - echo "Releasing packages..." -else - echo "Skipping release" - exit 0 -fi - -rm -rf dist - -for os in linux darwin windows freebsd openbsd; do - goreleaser release --skip=publish -p 2 --timeout="90m" --config "$(go run ./internal/release "$os")" - go clean -cache -done - -cat dist/**/*_checksums.txt >> "dist/traefik_${VERSION}_checksums.txt" -rm dist/**/*_checksums.txt -tar cfz "dist/traefik-${VERSION}.src.tar.gz" \ - --exclude-vcs \ - --exclude .idea \ - --exclude .travis \ - --exclude .semaphoreci \ - --exclude .github \ - --exclude dist . - -chown -R "$(id -u)":"$(id -g)" dist/