2 min read | by Jordi Prats
With Argo workflows you can automate tasks like building and pushing Docker images on a regular schedule: You just need to use the CronWorkflow to call any WorkflowTemplate.
In this example we are going to set up an Argo CronWorkflow that runs every hour, clones a Git repository, builds a Docker image using Kaniko, and pushes it to a Docker registry.
Assuming that we already have the WorkflowTemplate that will clone, build and push, we can create a CronWorkflow that will call this template every hour:
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: hourly-build-and-push-image
spec:
schedule: "0 * * * *"
concurrencyPolicy: "Allow"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 1
workflowSpec:
workflowTemplateRef:
name: build-and-push-image-multistep
arguments:
parameters:
- name: git-repo-url
value: "git@github.com:jordiprats/flask-pet2cattle.git"
- name: branch
value: "master"
- name: image-destination
value: "jordiprats/ampa:kaniko"
If we apply this CronWorkflow to the Kubernetes cluster, we won't see any Workflow running until the schedule is met:
$ kubectl apply -f cron.yaml
cronworkflow.argoproj.io/hourly-build-and-push-image created
$ kubectl get cronworkflow
NAME AGE
hourly-build-and-push-image 7s
$ kubectl get workflow
No resources found in argo namespace.
As soon as the schedule is met, the CronWorkflow will trigger the WorkflowTemplate:
$ kubectl get workflow
NAME STATUS AGE MESSAGE
hourly-build-and-push-image-1729692000 Succeeded 84s
In the status
of the CronWorkflow we'll be able to check when was the last time it was triggered:
$ kubectl get cronworkflow hourly-build-and-push-image -o yaml
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
(...)
spec:
concurrencyPolicy: Allow
failedJobsHistoryLimit: 1
schedule: 0 * * * *
successfulJobsHistoryLimit: 3
workflowSpec:
arguments:
parameters:
- name: git-repo-url
value: git@github.com:jordiprats/flask-pet2cattle.git
- name: branch
value: master
- name: image-destination
value: jordiprats/ampa:kaniko
workflowTemplateRef:
name: build-and-push-image-multistep
status:
lastScheduledTime: "2024-10-23T14:00:00Z"
Posted on 06/11/2024