fibonacci_go/argo-workflows/example-ci-workflow.yaml

132 lines
3.8 KiB
YAML
Raw Normal View History

2024-10-18 12:26:36 +00:00
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
2024-10-22 14:06:32 +00:00
volumeClaimTemplates:
- metadata:
name: shared-data
spec:
2024-10-23 13:14:37 +00:00
accessModes: [ "ReadWriteOnce" ]
2024-10-22 14:06:32 +00:00
resources:
requests:
storage: 1Gi
2024-10-23 13:14:37 +00:00
volumes:
- name: docker-config
secret:
secretName: my-docker-secret
2024-10-18 12:26:36 +00:00
templates:
- name: ci
dag:
tasks:
- name: git-clone
2024-10-22 14:06:32 +00:00
template: git-clone
2024-10-18 12:26:36 +00:00
arguments:
parameters: [{name: message, value: "git-clone task completed"}]
- name: ls
template: ls
dependencies: [git-clone]
- name: build
2024-10-22 14:06:32 +00:00
template: build
2024-10-18 12:26:36 +00:00
arguments:
parameters: [{name: message, value: "build task completed"}]
dependencies: [unit-tests, lint-scan]
- name: unit-tests
2024-10-23 15:03:17 +00:00
template: unit-tests
2024-10-18 12:26:36 +00:00
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]
2024-10-21 11:29:04 +00:00
args: [ls /]
- name: git-clone
2024-10-22 14:06:32 +00:00
container:
image: ubuntu:latest
command: [sh, -c]
args:
- |
apt update
apt install -y git
2024-10-23 13:14:37 +00:00
git clone -b main http://forgejo-http.gitea.svc.cluster.local:3000/giteaAdmin/fibonacci_go.git /shared-data/repo
2024-10-22 14:06:32 +00:00
ls -la /
ls -la /shared-data
2024-10-23 13:14:37 +00:00
ls -la /shared-data/repo
2024-10-22 14:06:32 +00:00
volumeMounts:
- name: shared-data
mountPath: /shared-data
- name: build
container:
2024-10-23 13:14:37 +00:00
image: gcr.io/kaniko-project/executor:v1.23.2
args:
[
"--dockerfile=/shared-data/repo/Dockerfile",
"--context=/shared-data/repo/",
2024-10-23 15:03:17 +00:00
"--destination=gitea.cnoe.localtest.me/giteaadmin/fibonacci_go:latest",
"--registry-certificate",
"gitea.cnoe.localtest.me=/shared-data/repo/tls/gitea.cnoe.localtest.me.crt"
2024-10-23 13:14:37 +00:00
]
2024-10-22 14:06:32 +00:00
volumeMounts:
2024-10-23 13:14:37 +00:00
- name: shared-data
mountPath: /shared-data
- name: docker-config
mountPath: /kaniko/.docker
2024-10-23 15:03:17 +00:00
- name: unit-tests
container:
image: golang:latest
command: [sh, -c]
args:
- |
cd /shared-data/repo && \
go test ./fib_test.go -v > test-results.txt; \
cat test-results.txt
volumeMounts:
- name: shared-data
mountPath: /shared-data
outputs:
artifacts:
- name: test-results
path: /shared-data/repo/test-results.txt