Argo Workflows 3.6
Some quick statistics about this release — there have been:
- 65 new features
- 268 fixes
- 182 documentation updates
- 135 people have contributed to this release of which
- 86 are new contributors to the project
A big thank you to everyone who’s helped out in building this release of Argo Workflows.
Cron Workflows
Eduardo Rodrigues has made some improvements to Cron Workflows. You can now specify multiple cron schedules on a single Cron Workflow (in #12616)
You can also use a stop strategy on Cron Workflows to stop them running any more workflows after a set of conditions occur such as too many errors (in #12305)
Cron Workflows also now have a when expression to further tune which occurrences of the workflow will run and which may be skipped, thanks to Isitha Subasinghe in #13474
UI






- You will be able to see live logs from pods if retrieval of logs from archived workflows fails and the pod logs are available thanks to Yuan Tang in #12024
- Cron Workflows and Workflow Templates now display their title and descriptions in the list view thanks to @panicboat in #12674
- You can specify HTTP headers used to detect IP addresses using the
IP_KEY_FUNC_HEADERS
environment variable. This is used in the rate limiter. Thanks to Yuan Tang in #12199 - URLs are now clickable links in workflow node info thanks to Adrien Delannoy in #13494
- You can now group nodes based on `templateRef` and see invoking template name instead of the execution order DAG thanks to Adrien Delannoy in #13511
- You can now retry a single node from a workflow in the user interface. This works even if the workflow succeeded thanks to Adrien Delannoy in #13695
- You can now filter with prefixes and patterns in the workflow list thanks to Adrien Delannoy in #13610
Metrics
The workflow controller can now emit metrics over OpenTelemetry GRPC protocol #13265 with selectable temporality #13267 and more configuration of what is emitted #13268. Many of the metrics have been updated and there are some new ones, all by Alan Clucas:
- Version information in the controller #13269
- Is this controller the leader #13270
- Kubernetes API calls duration #13271
- Pod phase monitoring #13272 and pod pending problem metrics #13273
- Cron Workflow #13274 and #13497 and Workflow Template #13275 counters
- Counters to check if you’re using deprecated features in #13735
There are a couple of other new features:
- There is a new
retries
variable available in metrics describing the number of retries thanks to @moonyoungCHAE in #11927 - Pod missing metrics will be emitted before pods are created thanks to @moonyoungCHAE in #11857
General
- You can use multiple mutexes and semaphores in the same workflow or template, and use both type of lock at the same time in #13358 thanks to Alan Clucas
- The controller uses a queue when archiving workflows to improve memory management when archiving a large number of workflows at once #13419 thanks to @ChenRussell
- Plugins can now be stopped, so that a stopped workflow will shutdown its plugin nodes thanks to @GhangZh in #12441
- The OSS artifact driver can now work with directories thanks to Shuangkun Tian in #12188 and it supports deletion (#12907) and streaming (#12908) now both thanks to @AlbeeSo
- Pod deletion will now happen in parallel to speed it up, also thanks to Shuangkun Tian in #12419
- You can use Shared Access Signatures to access artifacts stored in Azure now thanks to Kavish Dahekar in #13360
- Workflow pods now have a kubernetes finalizer to try to prevent them being deleted prematurely in #12413 thanks to @sakai-ast and Rohan Kumar
- Large environment variables will be offloaded to Config Maps thanks to Shuangkun Tian in #12325
- Large and flat workflows where there are many steps that need resolving at the same time could time out during template referencing. This is now much faster, also thanks to Shuangkun Tian in #12328
- Kubernetes scheduling constraints such as node selectors and tolerations will now be honored where they are specified in a WorkflowTemplate. These will be applied to the task and step pods, also thanks to Shuangkun Tian in #12568
- The pods created by workflows will have a
seccompProfile
ofRuntimeDefault
by default now thanks to @lukashankeln in #12984 - You can now template the
name
andtemplate
in atemplateRef
. This allows for fully data driven workflow DAGs, so try it out. Thanks to Shuangkun Tian in #12842. - The expr library has been upgraded providing some new functions in expressions thanks to Jiacheng Xu in #13194
- Configuration option to avoid sending Kubernetes Events for workflows thanks to @tooptoop4 in #13746
- Added an option to skip workflow duration estimation because it can be expensive thanks to @tooptoop4 in #13745
CLI
- You can now update Cron Workflows, Workflow Templates and Cluster Workflow Templates with the
update
command via the CLI thanks to thanks to Shuangkun Tian in #12803 - You can selectively list workflow templates using a
-l
label selector thanks to 名白 in #13364 - The CLI will now generate shell completions for the fish shell thanks to @Sn0rt in #13128
- We also build and ship the CLI complied for Risc-V thanks to Meng Zhuo in #12977
- The lint command supports a
--no-color
flag thanks to Miltiadis Alexis in #12953 - The CLI will now report if the version used doesn’t match the version of argo server in #13635 thanks to Mason Malone
- The ` — output` flag is now validated thanks to Mason Malone in #13695
Build and Development
- There is now an awesome
/retest
command for retesting PRs in Github that occasionally fail in a flakey test thanks to Miltiadis Alexis in #13000 - You can supply your own http client when using the go API client, allowing for proxying thanks to Will Wang in #12867