summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2023-08-29 10:44:03 +0200
committerPatrick Spek <p.spek@tyil.nl>2023-08-29 10:44:03 +0200
commit3067864f925f069a6d5c06b88d2693b712685e2b (patch)
treea9612155104e765fea2ebd43481f84be8308d54a
parentc16c2be5f767d34d428d5626c66fc0684150db37 (diff)
Add cicd resources for raku modules
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/event-sources/webhook.yaml5
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/sensors/generic-raku.yaml61
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml57
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml91
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml85
5 files changed, 299 insertions, 0 deletions
diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/event-sources/webhook.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/event-sources/webhook.yaml
index 5796540..584b43d 100644
--- a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/event-sources/webhook.yaml
+++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/event-sources/webhook.yaml
@@ -10,6 +10,11 @@ spec:
- port: 12000
targetPort: 12000
webhook:
+ generic-raku:
+ endpoint: /trigger/generic-raku
+ method: POST
+ port: "12000"
+ url: https://ci.tyil.nl
project-bashtard:
endpoint: /trigger/project-bashtard
method: POST
diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/sensors/generic-raku.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/sensors/generic-raku.yaml
new file mode 100644
index 0000000..ca42ce9
--- /dev/null
+++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/sensors/generic-raku.yaml
@@ -0,0 +1,61 @@
+---
+apiVersion: argoproj.io/v1alpha1
+kind: Sensor
+metadata:
+ name: generic-raku
+ namespace: cicd-system
+spec:
+ template:
+ serviceAccountName: argo-runner
+ dependencies:
+ - name: webhook
+ eventSourceName: webhook
+ eventName: project-raku-config-parser-toml
+ triggers:
+ - template:
+ name: webhook-workflow-trigger
+ k8s:
+ operation: create
+ source:
+ resource:
+ apiVersion: argoproj.io/v1alpha1
+ kind: Workflow
+ metadata:
+ generateName: generic-raku-
+ spec:
+ entrypoint: main
+ arguments:
+ parameters:
+ - name: ref
+ value: ""
+ - name: repo
+ value: ""
+ templates:
+ - name: main
+ inputs:
+ parameters:
+ - name: ref
+ value: "{{workflows.parameters.ref}}"
+ steps:
+ - - name: main
+ templateRef:
+ name: generic-raku
+ template: main
+ arguments:
+ parameters:
+ - name: ref
+ value: "{{inputs.parameters.ref}}"
+ - name: repo
+ value: "{{inputs.parameters.repo}}"
+ parameters:
+ - src:
+ dependencyName: webhook
+ dataKey: body.commit
+ value: "origin/master"
+ dest: spec.arguments.parameters.0.value
+ - src:
+ dependencyName: "webhook"
+ dataKey: body.repo
+ value: ""
+ dest: spec.arguments.parameters.1.value
+...
diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml
new file mode 100644
index 0000000..ae42659
--- /dev/null
+++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml
@@ -0,0 +1,57 @@
+---
+apiVersion: argoproj.io/v1alpha1
+kind: WorkflowTemplate
+metadata:
+ name: generic-raku
+ namespace: cicd-system
+spec:
+ entrypoint: main
+ arguments:
+ parameters:
+ - name: ref
+ value: origin/master
+ - name: repo
+ value: ""
+ templates:
+ - name: main
+ dag:
+ tasks:
+ - name: workdir
+ templateRef:
+ name: util
+ template: pvc-create
+ - name: fetch
+ templateRef:
+ name: util
+ template: fetch-git
+ arguments:
+ parameters:
+ - name: ref
+ value: "{{workflow.parameters.ref}}"
+ - name: repo
+ value: "{{workflow.parameters.repo}}"
+ - name: workingPVC
+ value: "{{tasks.workdir.outputs.parameters.name}}"
+ dependencies:
+ - workdir
+ - name: prove
+ templateRef:
+ name: util-raku
+ template: prove
+ arguments:
+ parameters:
+ - name: workingPVC
+ value: "{{tasks.workdir.outputs.parameters.name}}"
+ dependencies:
+ - fetch
+ - name: distribute
+ templateRef:
+ name: util-raku
+ template: dist-fez
+ arguments:
+ parameters:
+ - name: workingPVC
+ value: "{{tasks.workdir.outputs.parameters.name}}"
+ dependencies:
+ - prove
+...
diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml
new file mode 100644
index 0000000..cf6282b
--- /dev/null
+++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml
@@ -0,0 +1,91 @@
+---
+apiVersion: argoproj.io/v1alpha1
+kind: WorkflowTemplate
+metadata:
+ name: util-raku
+ namespace: cicd-system
+spec:
+ templates:
+ - name: dist-fez
+ inputs:
+ parameters:
+ - name: workingDir
+ value: "/work"
+ - name: workingPVC
+ value: ""
+ script:
+ image: rakudo-star
+ command:
+ - sh
+ source: |
+ cd -- "{{inputs.parameters.workingDir}}"
+
+ set -x
+
+ apt update && apt install -y expect
+ zef install fez --exclude="z"
+
+ expect <<-EOF
+ set timeout 30
+
+ spawn fez login
+
+ expect ">>= Username*" {
+ send -- "tyil\r"
+ }
+
+ expect ">>= Password*" {
+ send -- "gvo8xeORGDmm1ktqJPqHG86987L46vuE94Mw1LEu4rUZc5s9siYhnq5sXDC4\r"
+ }
+
+ expect eof
+ EOF
+
+ printf "\n"
+
+ expect <<-EOF
+ set timeout 60
+
+ spawn fez upload
+
+ expect {
+ "Upload anyway*" {
+ send -- "n\r"
+ }
+ eof { }
+ }
+ EOF
+ volumeMounts:
+ - name: workdir
+ mountPath: "{{inputs.parameters.workingDir}}"
+ volumes:
+ - name: workdir
+ persistentVolumeClaim:
+ claimName: "{{inputs.parameters.workingPVC}}"
+
+ - name: prove
+ inputs:
+ parameters:
+ - name: workingDir
+ value: "/work"
+ - name: workingPVC
+ value: ""
+ script:
+ image: rakudo-star
+ command:
+ - sh
+ source: |
+ cd -- "{{inputs.parameters.workingDir}}"
+
+ set -x
+
+ zef install . --deps-only
+ prove6 -lv --timer
+ volumeMounts:
+ - name: workdir
+ mountPath: "{{inputs.parameters.workingDir}}"
+ volumes:
+ - name: workdir
+ persistentVolumeClaim:
+ claimName: "{{inputs.parameters.workingPVC}}"
+...
diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml
new file mode 100644
index 0000000..4b782ce
--- /dev/null
+++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml
@@ -0,0 +1,85 @@
+---
+apiVersion: argoproj.io/v1alpha1
+kind: WorkflowTemplate
+metadata:
+ name: util
+ namespace: cicd-system
+spec:
+ templates:
+ - name: fetch-git
+ inputs:
+ parameters:
+ - name: repo
+ value: ""
+ - name: ref
+ value: "origin/master"
+ - name: workingDir
+ value: "/work"
+ - name: workingPVC
+ value: ""
+ script:
+ image: debian
+ command:
+ - dash
+ source: |
+ export DEBIAN_FRONTEND=noninteractive
+ export GIT_WORK_TREE="{{inputs.parameters.workingDir}}"
+ export GIT_DIR="$GIT_WORK_TREE/.git"
+
+ apt update && apt install -y git
+
+ git init
+ git remote add origin "{{inputs.parameters.repo}}"
+ git fetch origin -a
+ git reset --hard "{{inputs.parameters.ref}}"
+ volumeMounts:
+ - name: workdir
+ mountPath: "{{inputs.parameters.workingDir}}"
+ volumes:
+ - name: workdir
+ persistentVolumeClaim:
+ claimName: "{{inputs.parameters.workingPVC}}"
+
+ - name: pvc-create
+ inputs:
+ parameters:
+ - name: size
+ value: 1Gi
+ - name: storageClass
+ value: longhorn
+ - name: namePrefix
+ value: argo-
+ outputs:
+ parameters:
+ - name: name
+ valueFrom:
+ jsonPath: "{.metadata.name}"
+ resource:
+ action: create
+ setOwnerReference: true
+ manifest: |
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ generateName: "{{inputs.parameters.namePrefix}}"
+ spec:
+ storageClassName: "{{inputs.parameters.storageClass}}"
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: "{{inputs.parameters.size}}"
+
+ - name: pvc-delete
+ inputs:
+ parametes:
+ - name: name
+ value: ""
+ resource:
+ action: delete
+ manifest: |
+ apiVersion: v1
+ kind: PersistentVolumeClaim
+ metadata:
+ name: "{{inputs.parameters.name}}"
+...