Skip to content

feat: sync release 3.6 to upstream 3.6.7 for small changes and vulnerabilities fixes (Cr 28355) #358

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 30 commits into from
May 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a3b9373
fix: bump deps for k8schain to fix ecr-login (#14008) (release-3.6 ch…
Joibel Feb 11, 2025
c8dc1bc
fix(ci): python sdk release process (release-3.6) (#14183)
Joibel Feb 12, 2025
01524a8
docs: clarify qps/burst on controller (cherry-pick #14190) (#14192)
gcp-cherry-pick-bot[bot] Feb 19, 2025
ff5c155
fix(api/jsonschema): use unchanging JSON Schema version (cherry-pick …
gcp-cherry-pick-bot[bot] Mar 6, 2025
68d8ace
fix(api/jsonschema): use working `$id` (cherry-pick #14257) (#14258)
gcp-cherry-pick-bot[bot] Mar 6, 2025
bad5f9c
docs: autogenerate tested k8s versions and centralize config (#14176)…
Joibel Mar 6, 2025
823429f
chore(deps): bump minio-go to newer version (#14185) (release-3.6) (#…
Joibel Mar 6, 2025
96181d3
fix: split pod controller from workflow controller (#14129) (release-…
Joibel Mar 6, 2025
0128fef
chore(deps): fix snyk (#14264) (release-3.6) (#14268)
Joibel Mar 6, 2025
f8a39ef
chore: revert to correct k8s versions
Joibel Mar 7, 2025
a2de3a1
chore(deps): bump github.com/go-jose/go-jose/v3 from 3.0.3 to 3.0.4 i…
gcp-cherry-pick-bot[bot] Mar 7, 2025
1f558bc
fix: wait for workflow informer to sync before pod informer (cherry-p…
gcp-cherry-pick-bot[bot] Mar 7, 2025
12cc537
fix(cli): remove red from log colour selection. Fixes #6740 (cherry-p…
gcp-cherry-pick-bot[bot] Mar 7, 2025
0a0ef61
fix: correct semaphore configmap keys for multiple semaphores (#14184…
Joibel Mar 11, 2025
9e53206
fix: don't print help for non-validation errors. Fixes argoproj#14234…
gcp-cherry-pick-bot[bot] Mar 11, 2025
aff1c05
docs: fix kubernetes versions (release-3.6) (#14273)
Joibel Mar 11, 2025
8e03083
fix(workflow/sync): use RWMutex to prevent concurrent map access (che…
gcp-cherry-pick-bot[bot] Mar 24, 2025
37b4096
chore(lint): update golangci-lint to 2.1.1 (#14390) (cherry-pick rele…
Joibel Apr 22, 2025
fbea019
chore: bump golang 1.23->1.24 (#14385) (cherry-pick release-3.6) (#14…
Joibel Apr 22, 2025
fbda985
fix: gracefully handle invalid CronWorkflows and simplify logic. (ch…
MasonM Apr 23, 2025
2863f0e
fix: prevent dfs sorter infinite recursion on cycle. Fixes #13395 (ch…
gcp-cherry-pick-bot[bot] Apr 23, 2025
f1cae21
chore(deps): bump github.com/expr-lang/expr from 1.16.9 to 1.17.0 (#1…
Joibel Apr 23, 2025
a0a87bf
chore(deps)!: update k8s and argo-events (release-3.6) (#14424)
Joibel Apr 28, 2025
3993b12
fix: correct retry logic (#13734) (release-3.6) (#14428)
Joibel Apr 28, 2025
dcaca63
fix: manual retries exit handler cleanup. Fixes #14180 (#14181) (rele…
Joibel Apr 28, 2025
0c14fbb
fix: correct manual retry logic. Fixes #14124 (#14328) (release-3.6) …
Joibel Apr 28, 2025
8d7dae6
fix: disable ALPN in argo-server as a workaround (#14433)
Joibel Apr 29, 2025
703e6ef
Merge remote-tracking branch 'origin/release-3.6' into CR-28355-sync-…
kim-codefresh May 15, 2025
23d60ee
result of codegen
kim-codefresh May 18, 2025
f8ebecb
fix:lint
kim-codefresh May 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"appPort": 8080,
"features": {
"ghcr.io/devcontainers/features/go:1": {
"version": "1.23"
"version": "1.24"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "20"
Expand Down
11 changes: 6 additions & 5 deletions .devcontainer/pre-build.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
set -eux

# install kubernetes
# install kubernetes using the minimum tested version
. hack/k8s-versions.sh
wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
k3d cluster get k3s-default || k3d cluster create --image rancher/k3s:v1.27.3-k3s1 --wait
k3d cluster get k3s-default || k3d cluster create --image "rancher/k3s:${K8S_VERSIONS[min]}-k3s1" --wait
k3d kubeconfig merge --kubeconfig-merge-default

# install kubectl
curl -LO https://dl.k8s.io/release/v1.27.3/bin/linux/$(go env GOARCH)/kubectl
curl -LO "https://dl.k8s.io/release/${K8S_VERSIONS[min]}/bin/linux/$(go env GOARCH)/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl cluster-info

# install kit
make kit
curl -q https://raw.githubusercontent.com/kitproj/kit/main/install.sh | sh

# install protocol buffer compiler (protoc)
sudo apt update
Expand Down
25 changes: 12 additions & 13 deletions .github/workflows/ci-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ jobs:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
cache: true
- run: make test STATIC_FILES=false GOTEST='go test -p 20 -covermode=atomic -coverprofile=coverage.out'
- name: Upload coverage report
Expand All @@ -151,7 +151,7 @@ jobs:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
cache: true
# windows run does not use makefile target because it does a lot more than just testing and is not cross-platform compatible
- run: go test -p 20 -covermode=atomic -coverprofile='coverage.out' $(go list ./... | select-string -Pattern 'github.com/argoproj/argo-workflows/v3/workflow/controller' , 'github.com/argoproj/argo-workflows/v3/server' -NotMatch)
Expand Down Expand Up @@ -242,15 +242,15 @@ jobs:
profile: minimal
use-api: true
- test: test-executor
install_k3s_version: v1.28.13+k3s1
k8s_version: min
profile: minimal
use-api: false
- test: test-corefunctional
install_k3s_version: v1.28.13+k3s1
k8s_version: min
profile: minimal
use-api: false
- test: test-functional
install_k3s_version: v1.28.13+k3s1
k8s_version: min
profile: minimal
use-api: false
steps:
Expand All @@ -267,7 +267,7 @@ jobs:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
cache: true
- name: Install Java for the SDK
if: ${{matrix.test == 'test-java-sdk'}}
Expand All @@ -283,12 +283,11 @@ jobs:
python-version: '3.x'
cache: pip
- name: Install and start K3S
env:
K8S_VERSION: ${{ matrix.k8s_version || 'max' }}
run: |
if ! echo "${{ matrix.install_k3s_version }}" | egrep '^v[0-9]+\.[0-9]+\.[0-9]+\+k3s1$'; then
export INSTALL_K3S_VERSION=v1.31.0+k3s1
else
export INSTALL_K3S_VERSION=${{ matrix.install_k3s_version }}
fi
. hack/k8s-versions.sh
export INSTALL_K3S_VERSION="${K8S_VERSIONS[$K8S_VERSION]}+k3s1"

curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=stable \
INSTALL_K3S_EXEC="--docker --kubelet-arg=config=${GITHUB_WORKSPACE}/test/e2e/manifests/kubelet-configuration.yaml" \
Expand Down Expand Up @@ -407,7 +406,7 @@ jobs:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
cache: true
- name: Install protoc
run: |
Expand Down Expand Up @@ -444,7 +443,7 @@ jobs:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
cache: true
- run: make lint STATIC_FILES=false
# if lint makes changes that are not in the PR, fail the build
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
python-version: 3.9
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: '1.23'
go-version: "1.24"
- uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1
with:
node-version: "19"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ jobs:
node-version: "20" # change in all GH Workflows
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version: "1.23"
go-version: "1.24"
- name: Restore node packages cache
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
Expand Down
105 changes: 66 additions & 39 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# https://golangci-lint.run/usage/quick-start/
version: "2"
run:
timeout: 12m
build-tags:
- api
- cli
Expand All @@ -17,13 +16,7 @@ linters:
- bodyclose
- copyloopvar
- errcheck
- goimports
# only minor issues
# - errorlint
# seems to have bugs in recent version, also slow
# - gci
- gosec
- gosimple
- govet
- ineffassign
- misspell
Expand All @@ -34,36 +27,70 @@ linters:
- sqlclosecheck
- staticcheck
- testifylint
- typecheck
- unparam
- unused
linters-settings:
goimports:
local-prefixes: github.com/argoproj/argo-workflows/
gosec:
includes:
- G304
- G307
excludes:
# G106: Use of ssh InsecureIgnoreHostKey should be audited
- G106
# G402: TLS InsecureSkipVerify set true
- G402
# G601: Implicit memory aliasing in for loop.
- G601
issues:
exclude-rules:
- path: server/artifacts/artifact_server_test.go
text: "response body must be closed"
exclude-dirs:
- dist
- docs
- examples
- hack
- manifests
- pkg/client
- sdks
- ui
- vendor
exclude-files:
- server/static/files.go
settings:
gosec:
includes:
- G304
- G307
excludes:
# G106: Use of ssh InsecureIgnoreHostKey should be audited
- G106
# G402: TLS InsecureSkipVerify set true
- G402
staticcheck:
checks:
- all
# Capitalised variable names
- "-ST1003"
# Capitalised error strings
- "-ST1005"
# Receiver names
- "-ST1016"
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- path: server/artifacts/artifact_server_test.go
text: response body must be closed
paths:
- dist
- docs
- examples
- hack
- manifests
- pkg/client
- sdks
- ui
- vendor
- third_party$
- builtin$
- examples$
formatters:
enable:
- gofmt
- goimports
settings:
goimports:
local-prefixes:
- github.com/argoproj/argo-workflows/
exclusions:
generated: lax
paths:
- dist
- docs
- examples
- hack
- manifests
- pkg/client
- sdks
- ui
- vendor
- third_party$
- builtin$
- examples$
2 changes: 2 additions & 0 deletions .spelling
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ liveness
localhost
maxFailures
maxSuccess
md
memoization
memoized
memoizing
Expand All @@ -200,6 +201,7 @@ parameterizing
params
pprof
pre-commit
qps
rc2
repo
roadmap
Expand Down
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ ARG GIT_COMMIT=unknown
ARG GIT_TAG=unknown
ARG GIT_TREE_STATE=unknown

FROM golang:1.23-alpine3.19 as builder
FROM golang:1.24-alpine3.21 as builder

# libc-dev to build openapi-gen
RUN apk update && apk add --no-cache \
Expand Down Expand Up @@ -109,6 +109,8 @@ USER 8737

WORKDIR /home/argo

# Temporary workaround for https://github.com/grpc/grpc-go/issues/434
ENV GRPC_ENFORCE_ALPN_ENABLED=false
COPY hack/ssh_known_hosts /etc/ssh/
COPY hack/nsswitch.conf /etc/
COPY --from=argocli-build /go/src/github.com/argoproj/argo-workflows/dist/argo /bin/
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.windows
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ARG GIT_TREE_STATE=unknown

# had issues with official golange image for windows so I'm using plain servercore
FROM mcr.microsoft.com/windows/servercore:${IMAGE_OS_VERSION} as builder
ENV GOLANG_VERSION=1.23
ENV GOLANG_VERSION=1.24
SHELL ["powershell", "-Command"]

# install chocolatey package manager
Expand Down
15 changes: 9 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -298,12 +298,12 @@ swagger: \
$(GOPATH)/bin/mockery: Makefile
# update this in Nix when upgrading it here
ifneq ($(USE_NIX), true)
go install github.com/vektra/mockery/v2@v2.42.2
go install github.com/vektra/mockery/v2@v2.53.3
endif
$(GOPATH)/bin/controller-gen: Makefile
# update this in Nix when upgrading it here
ifneq ($(USE_NIX), true)
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.15.0
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.2
endif
$(GOPATH)/bin/go-to-protobuf: Makefile
# update this in Nix when upgrading it here
Expand Down Expand Up @@ -451,7 +451,7 @@ dist/manifests/%: manifests/%
# lint/test/etc

$(GOPATH)/bin/golangci-lint: Makefile
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b `go env GOPATH`/bin v1.61.0
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b `go env GOPATH`/bin v2.1.1

.PHONY: lint
lint: server/static/files.go $(GOPATH)/bin/golangci-lint
Expand Down Expand Up @@ -658,7 +658,7 @@ dist/kubernetes.swagger.json: Makefile
@mkdir -p dist
# recurl will only fetch if the file doesn't exist, so delete it
rm -f $@
./hack/recurl.sh $@ https://raw.githubusercontent.com/kubernetes/kubernetes/v1.30.3/api/openapi-spec/swagger.json
./hack/recurl.sh $@ https://raw.githubusercontent.com/kubernetes/kubernetes/v1.32.2/api/openapi-spec/swagger.json

pkg/apiclient/_.secondary.swagger.json: hack/api/swagger/secondaryswaggergen.go pkg/apis/workflow/v1alpha1/openapi_generated.go dist/kubernetes.swagger.json
rm -Rf v3 vendor
Expand Down Expand Up @@ -712,7 +712,7 @@ endif
.PHONY: docs-spellcheck
docs-spellcheck: /usr/local/bin/mdspell
# check docs for spelling mistakes
mdspell --ignore-numbers --ignore-acronyms --en-us --no-suggestions --report $(shell find docs -name '*.md' -not -name upgrading.md -not -name README.md -not -name fields.md -not -name upgrading.md -not -name executor_swagger.md -not -path '*/cli/*')
mdspell --ignore-numbers --ignore-acronyms --en-us --no-suggestions --report $(shell find docs -name '*.md' -not -name upgrading.md -not -name README.md -not -name fields.md -not -name upgrading.md -not -name executor_swagger.md -not -path '*/cli/*' -not -name tested-kubernetes-versions.md)
# alphabetize spelling file -- ignore first line (comment), then sort the rest case-sensitive and remove duplicates
$(shell cat .spelling | awk 'NR<2{ print $0; next } { print $0 | "LC_COLLATE=C sort" }' | uniq | tee .spelling > /dev/null)

Expand All @@ -737,7 +737,7 @@ endif
.PHONY: docs-lint
docs-lint: /usr/local/bin/markdownlint
# lint docs
markdownlint docs --fix --ignore docs/fields.md --ignore docs/executor_swagger.md --ignore docs/cli --ignore docs/walk-through/the-structure-of-workflow-specs.md
markdownlint docs --fix --ignore docs/fields.md --ignore docs/executor_swagger.md --ignore docs/cli --ignore docs/walk-through/the-structure-of-workflow-specs.md --ignore docs/tested-kubernetes-versions.md

/usr/local/bin/mkdocs:
# update this in Nix when upgrading it here
Expand All @@ -756,6 +756,9 @@ docs: /usr/local/bin/mkdocs \
# check environment-variables.md contains all variables mentioned in the code
./hack/docs/check-env-doc.sh
# build the docs
ifeq ($(shell echo $(GIT_BRANCH) | head -c 8),release-)
./hack/docs/tested-versions.sh > docs/tested-kubernetes-versions.md
endif
TZ=UTC mkdocs build --strict
# tell the user the fastest way to edit docs
@echo "ℹ️ If you want to preview your docs, open site/index.html. If you want to edit them with hot-reload, run 'make docs-serve' to start mkdocs on port 8000"
Expand Down
Loading
Loading