Argo Workflows 中没有直接提供获取上一个/下一个调度时间的内置变量。但可以使用 Cron Workflow 管理器来实现。
下面是一个示例 Cron Workflow,它运行每分钟一次,输出上一个和下一个调度时间:
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: example-cron
spec:
schedule: "*/1 * * * *"
startingDeadlineSeconds: 30
concurrencyPolicy: Forbid
workflowSpec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: get-time
template: get-time
arguments:
parameters:
- name: curr_time
value: "{{time.Now.UTC.Format \"2006-01-02T15:04:05Z\"}}"
- name: print-time
template: print-time
dependencies:
- get-time
arguments:
parameters:
- name: curr_time
value: "{{tasks.get-time.outputs.parameters.curr_time}}"
- name: prev_time
value: "{{workflow.parameters.prev_time}}"
- name: next_time
value: "{{workflow.parameters.next_time}}"
- name: get-time
inputs:
parameters:
- name: curr_time
value: ""
outputs:
parameters:
- name: curr_time
value: "{{inputs.parameters.curr_time}}"
- name: print-time
inputs:
parameters:
- name: curr_time
value: ""
- name: prev_time
value: ""
- name: next_time
value: ""
container:
image: busybox
command: [sh, -c]
args: ["echo \"Current time: {{inputs.parameters.curr_time}}\nPrevious time: {{inputs.parameters.prev_time}}\nNext time: {{inputs.parameters.next_time}}\""]
env:
- name: TZ
value: "UTC"
这个 Cron Workflow 每分钟运行一次,使用 get-time
模板获取当前时间,并