apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: ci-workflow spec: inputs: parameters: - name: revision steps: - - name: build template: build-golang-example arguments: parameters: - name: revision value: "{{inputs.parameters.revision}}" # the test step expands into three parallel steps running # different operating system images. each mounts the workdir # and runs the compiled binary from the build step. - - name: test template: run-hello arguments: parameters: - name: os-image value: "{{item.image}}:{{item.tag}}" withItems: - { image: "debian", tag: "9.1" } - { image: "alpine", tag: "3.6" } - { image: "ubuntu", tag: "17.10" } --- apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: build-golang-example spec: inputs: parameters: - name: revision artifacts: - name: code path: /go/src/github.com/golang/example git: repo: https://github.com/golang/example.git revision: "{{inputs.parameters.revision}}" container: image: golang:1.8 command: [sh, -c] args: [ " cd /go/src/github.com/golang/example/hello && git status && go build -v . ", ] volumeMounts: - name: workdir mountPath: /go --- apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: run-hello spec: inputs: parameters: - name: os-image container: image: "{{inputs.parameters.os-image}}" command: [sh, -c] args: [ " uname -a ; cat /etc/os-release ; /go/src/github.com/golang/example/hello/hello ", ] volumeMounts: - name: workdir mountPath: /go --- apiVersion: argoproj.io/v1alpha1 kind: Sensor metadata: name: github namespace: argo-events spec: template: serviceAccountName: argo-events-sa dependencies: - name: test-dep gatewayName: github eventName: example subscription: http: port: 9300 triggers: - template: name: github-workflow-trigger k8s: group: argoproj.io version: v1alpha1 resource: workflows operation: create source: resource: apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: ci-workflow- spec: # ttlStrategy: # secondsAfterCompletion: 10 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished # secondsAfterSuccess: 5 # Time to live after workflow is successful # secondsAfterFailure: 5 # Time to live after workflow fails serviceAccountName: workflow # entrypoint: ci-workflow # entrypoint is the name of the template used as the starting point of the workflow entrypoint: ci-workflow workflowTemplateRef: name: ci-workflow # the 'ci-workflow' template accepts an parameter 'revision', with a default of 'master'. # this can be overridden via argo CLI (e.g. `argo submit ci.yaml -p revision=0dea2d0`) arguments: parameters: - name: revision value: master # a temporary volume, named workdir, will be used as a working directory # for this workflow. This volume is passed around from step to step. volumeClaimTemplates: - metadata: name: workdir spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 1Gi parameters: - src: dependencyName: test-dep dest: spec.arguments.parameters.0.value