Skip to content

Instantly share code, notes, and snippets.

@purwandi
Last active June 30, 2021 03:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save purwandi/fadc14c00905da3a38e523c76ec26b28 to your computer and use it in GitHub Desktop.
Save purwandi/fadc14c00905da3a38e523c76ec26b28 to your computer and use it in GitHub Desktop.
ArgoCD Workflow
apiVersion: argoproj.io/v1alpha1
kind: EventBus
metadata:
name: default
namespace: optimus
spec:
nats:
native:
# Optional, defaults to 3. If it is < 3, set it to 3, that is the minimal requirement.
replicas: 3
# Optional, authen strategy, "none" or "token", defaults to "none"
auth: none
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: argo-workflow-webhook
namespace: optimus
spec:
service:
ports:
- port: 12000
targetPort: 12000
webhook:
gitlab-hook:
endpoint: /push
port: "12000"
method: POST
---
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: argo-workflow-sensor
namespace: optimus
spec:
template:
serviceAccountName: operator-argo-event
dependencies:
- name: trigger-sensor
eventSourceName: argo-workflow-webhook
eventName: gitlab-hook
triggers:
- template:
name: gitlab-webhook-trigger
k8s:
group: argoproj.io
version: argoproj.io/v1alpha1
resources: workflows
operation: create
source:
resources:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: gitlab-webhook-
spec:
entrypoint: main
templates:
- name: main
container:
image: alpine:latest
command: ["sh", "-c"]
args:
- echo "hello"
# argo template create template.yaml
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: main-template
spec:
entrypoint: main
ttlStrategy:
secondsAfterCompletion: 300
podGC:
strategy: OnPodCompletion
templates:
- name: main
inputs:
parameters:
- name: message
container:
image: alpine:latest
command: ["sh", "-c"]
args: ["{{inputs.parameters.message}}"]
- name: golang
inputs:
parameters:
- name: step
container:
image: golang:1.16-alpine
command: [sh, -c]
args: ["{{inputs.parameters.step}}"]
# argo submit workflow-basic.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: one-share-workflow
spec:
entrypoint: prepare
templates:
- name: prepare
script:
image: alpine:latest
command: ["sh", "-c"]
args:
- echo "hello"
- sleep 140
- name: build
script:
image: alpine:latest
command:
- sh -c
args:
- echo "hello build"
- sleep 140
# argo submit workflow-basic.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: steps-
spec:
entrypoint: main
templates:
- name: main
steps:
- - name: prepare
template: plate
arguments:
parameters:
- name: message
value: |
echo "Prepare for deployment"
sleep 140
echo "Finished preparation"
- - name: build
template: plate
arguments:
parameters:
- name: message
value: echo "Build"
- name: build-parallel
template: plate
arguments:
parameters:
- name: message
value: |
echo "Parele build"
sleep 10
echo "done"
- - name: release
template: plate
arguments:
parameters:
- name: message
value: echo "Release"
- - name: result
template: plate
arguments:
parameters:
- name: message
value: echo "Result"
- name: plate
inputs:
parameters:
- name: message
container:
image: alpine:latest
command: ["sh", "-c"]
args: ["{{inputs.parameters.message}}"]
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: steps-
spec:
entrypoint: oneshare-flow
templates:
- name: oneshare-flow
steps:
- - name: prepare
templateRef:
name: main-template
template: main
arguments:
parameters:
- name: message
value: |
echo "Prepare for deployment"
sleep 140
echo "Finished preparation"
- - name: build
templateRef:
name: main-template
template: main
arguments:
parameters:
- name: message
value: echo "Build"
- name: build-parallel
templateRef:
name: main-template
template: main
arguments:
parameters:
- name: message
value: |
echo "Parele build"
sleep 10
echo "done"
- name: build-golang
templateRef:
name: main-template
template: golang
arguments:
parameters:
- name: step
value: |
go get github.com/labstack/echo/v4
- - name: release
templateRef:
name: main-template
template: main
arguments:
parameters:
- name: message
value: echo "Release"
- - name: result
templateRef:
name: main-template
template: main
arguments:
parameters:
- name: message
value: echo "Result"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment