diff --git a/clustertask/argo-sync.yaml b/clustertask/argo-sync.yaml new file mode 100644 index 0000000..f4b8c65 --- /dev/null +++ b/clustertask/argo-sync.yaml @@ -0,0 +1,49 @@ +apiVersion: tekton.dev/v1beta1 +kind: ClusterTask +metadata: + annotations: + tekton.dev/categories: Deployment + tekton.dev/displayName: argocd + tekton.dev/pipelines.minVersion: 0.12.1 + tekton.dev/platforms: linux/amd64 + tekton.dev/tags: deploy + labels: + app.kubernetes.io/version: "0.2" + name: argocd-task-sync-and-wait +spec: + description: |- + This task syncs (deploys) an Argo CD application and waits for it to be healthy. + To do so, it requires the address of the Argo CD server and some form of authentication either a username/password or an authentication token. + params: + - description: name of the application to sync + name: application-name + type: string + - default: HEAD + description: the revision to sync to + name: revision + type: string + - default: -- + name: flags + type: string + - default: v2.2.5 + name: argocd-version + type: string + stepTemplate: + envFrom: + - configMapRef: + name: argocd-env-configmap + - secretRef: + name: argocd-env-secret + name: "" + resources: {} + steps: + - image: quay.io/argoproj/argocd:$(params.argocd-version) + name: login + resources: {} + script: | + if [ -z "$ARGOCD_AUTH_TOKEN" ]; then + yes | argocd login "$ARGOCD_SERVER" --username="$ARGOCD_USERNAME" --password="$ARGOCD_PASSWORD" "$(params.flags)"; + fi + argocd --grpc-web app get --refresh "$(params.application-name)" > /dev/null && argocd --grpc-web app wait "$(params.application-name)" --sync --health + argocd app sync "$(params.application-name)" --revision "$(params.revision)" "$(params.flags)" + argocd app wait "$(params.application-name)" --health "$(params.flags)"