From 3067864f925f069a6d5c06b88d2693b712685e2b Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Tue, 29 Aug 2023 10:44:03 +0200 Subject: Add cicd resources for raku modules --- .../resources/event-sources/webhook.yaml | 5 ++ .../resources/sensors/generic-raku.yaml | 61 +++++++++++++++ .../resources/workflow-templates/generic-raku.yaml | 57 ++++++++++++++ .../resources/workflow-templates/util-raku.yaml | 91 ++++++++++++++++++++++ .../resources/workflow-templates/util.yaml | 85 ++++++++++++++++++++ 5 files changed, 299 insertions(+) create mode 100644 data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/sensors/generic-raku.yaml create mode 100644 data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml create mode 100644 data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml create mode 100644 data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml 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}}" +... -- cgit v1.1