apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: example-ci-workflow- namespace: argo labels: workflows.argoproj.io/archive-strategy: "false" annotations: workflows.argoproj.io/description: | This is a simple workflow to show what steps we need to take to deploy an application. spec: entrypoint: ci serviceAccountName: admin volumeClaimTemplates: - metadata: name: shared-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumes: - name: docker-config secret: secretName: my-docker-secret templates: - name: ci dag: tasks: - name: git-clone template: git-clone arguments: parameters: [{name: message, value: "git-clone task completed"}] - name: ls template: ls dependencies: [git-clone] - name: build template: build arguments: parameters: [{name: message, value: "build task completed"}] dependencies: [unit-tests, lint-scan] - name: unit-tests template: unit-tests arguments: parameters: [{name: message, value: "unit-tests task completed"}] dependencies: [ls] - name: lint-scan template: simple-container arguments: parameters: [{name: message, value: "lint-scan task completed"}] dependencies: [ls] - name: trivy-image-scan template: simple-container arguments: parameters: [{name: message, value: "trivy-image-scan task completed"}] dependencies: [build] - name: trivy-filesystem-scan template: simple-container arguments: parameters: [{name: message, value: "trivy-filesystem-scan task completed"}] dependencies: [git-clone] - name: push-image template: simple-container arguments: parameters: [{name: message, value: "push-image task completed"}] # when: " == true" dependencies: [trivy-image-scan, trivy-filesystem-scan] - name: simple-container inputs: parameters: - name: message container: image: alpine:latest command: [sh, -c] args: ["echo {{inputs.parameters.message}}"] - name: ls container: image: alpine:latest command: [sh, -c] args: [ls /] - name: git-clone container: image: ubuntu:latest command: [sh, -c] args: - | apt update apt install -y git git clone -b main http://forgejo-http.gitea.svc.cluster.local:3000/giteaAdmin/fibonacci_go.git /shared-data/repo ls -la / ls -la /shared-data ls -la /shared-data/repo volumeMounts: - name: shared-data mountPath: /shared-data - name: build container: image: gcr.io/kaniko-project/executor:v1.23.2 args: [ "--dockerfile=/shared-data/repo/Dockerfile", "--context=/shared-data/repo/", "--destination=gitea.cnoe.localtest.me/giteaadmin/fibonacci_go:latest", "--registry-certificate", "gitea.cnoe.localtest.me=/shared-data/repo/tls/gitea.cnoe.localtest.me.crt" ] volumeMounts: - name: shared-data mountPath: /shared-data - name: docker-config mountPath: /kaniko/.docker - name: unit-tests container: image: golang:1.23.2 command: [sh, -c] args: - | cd /shared-data/repo && \ go test ./... -v > test-results.txt; \ cat test-results.txt volumeMounts: - name: shared-data mountPath: /shared-data # How to extract artifacts outputs: artifacts: - name: test-results path: /shared-data/repo/test-results.txt