From 96c6679bebf8bca7e4a816215d0c34091bd701f7 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Fri, 8 Sep 2023 19:47:34 +0200 Subject: Commit workflow for raku modules --- .../resources/workflow-templates/generic-raku.yaml | 33 ++++- .../resources/workflow-templates/generic.yaml | 43 +++++++ .../resources/workflow-templates/util-raku.yaml | 137 ++++++++++++++++++++- .../resources/workflow-templates/util.yaml | 24 +++- 4 files changed, 226 insertions(+), 11 deletions(-) create mode 100644 data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic.yaml 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 index ae42659..869c497 100644 --- 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 @@ -8,6 +8,8 @@ spec: entrypoint: main arguments: parameters: + - name: dist + value: false - name: ref value: origin/master - name: repo @@ -34,17 +36,37 @@ spec: value: "{{tasks.workdir.outputs.parameters.name}}" dependencies: - workdir - - name: prove + - name: qa-prove templateRef: name: util-raku - template: prove + template: qa-prove arguments: parameters: - name: workingPVC value: "{{tasks.workdir.outputs.parameters.name}}" dependencies: - fetch - - name: distribute + - name: qa-reuse + templateRef: + name: util + template: qa-reuse + arguments: + parameters: + - name: workingPVC + value: "{{tasks.workdir.outputs.parameters.name}}" + dependencies: + - fetch + - name: qa-fez + templateRef: + name: util-raku + template: qa-fez + arguments: + parameters: + - name: workingPVC + value: "{{tasks.workdir.outputs.parameters.name}}" + dependencies: + - fetch + - name: dist-fez templateRef: name: util-raku template: dist-fez @@ -53,5 +75,8 @@ spec: - name: workingPVC value: "{{tasks.workdir.outputs.parameters.name}}" dependencies: - - prove + - qa-prove + - qa-reuse + - qa-fez + when: "{{workflow.parameters.dist}} == true" ... diff --git a/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic.yaml b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic.yaml new file mode 100644 index 0000000..5e541df --- /dev/null +++ b/data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic.yaml @@ -0,0 +1,43 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: WorkflowTemplate +metadata: + name: generic + namespace: cicd-system +spec: + entrypoint: main + arguments: + parameters: + - name: ref + value: origin/master + - name: repo + value: "" + - name: vcs + value: "git" + templates: + - name: main + dag: + tasks: + - name: workdir + templateRef: + name: util + template: pvc-create + # TODO: Decide on fetch function + # TODO: Check for Makefile + # TODO: Run make install-deps + # TODO: Run make test + - 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 +... 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 index cf6282b..64b6ad2 100644 --- 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 @@ -9,12 +9,31 @@ spec: - name: dist-fez inputs: parameters: + - name: fezUsernameSecret + value: "argo-credentials-fez" + - name: fezPasswordSecret + value: "argo-credentials-fez" + - name: fezUsernameSecretKey + value: "username" + - name: fezPasswordSecretKey + value: "password" - name: workingDir value: "/work" - name: workingPVC value: "" script: image: rakudo-star + env: + - name: FEZ_USERNAME + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.fezUsernameSecret}}" + key: "{{inputs.parameters.fezUsernameSecretKey}}" + - name: FEZ_PASSWORD + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.fezPasswordSecret}}" + key: "{{inputs.parameters.fezPasswordSecretKey}}" command: - sh source: | @@ -31,14 +50,25 @@ spec: spawn fez login expect ">>= Username*" { - send -- "tyil\r" + send -- "$FEZ_USERNAME\r" } expect ">>= Password*" { - send -- "gvo8xeORGDmm1ktqJPqHG86987L46vuE94Mw1LEu4rUZc5s9siYhnq5sXDC4\r" + log_user 0 + send -- "$FEZ_PASSWORD\r" + log_user 1 + } + + expect { + eof { + exit 0 + } + + "*Failed to login*" { + exit 1 + } } - expect eof EOF printf "\n" @@ -46,15 +76,110 @@ spec: expect <<-EOF set timeout 60 - spawn fez upload + spawn fez upload -f expect { "Upload anyway*" { send -- "n\r" + exit 1 + } + eof { + exit 0 + } + } + EOF + volumeMounts: + - name: workdir + mountPath: "{{inputs.parameters.workingDir}}" + volumes: + - name: workdir + persistentVolumeClaim: + claimName: "{{inputs.parameters.workingPVC}}" + + - name: qa-fez + inputs: + parameters: + - name: fezUsernameSecret + value: "argo-credentials-fez" + - name: fezPasswordSecret + value: "argo-credentials-fez" + - name: fezUsernameSecretKey + value: "username" + - name: fezPasswordSecretKey + value: "password" + - name: workingDir + value: "/work" + - name: workingPVC + value: "" + script: + image: rakudo-star + env: + - name: FEZ_USERNAME + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.fezUsernameSecret}}" + key: "{{inputs.parameters.fezUsernameSecretKey}}" + - name: FEZ_PASSWORD + valueFrom: + secretKeyRef: + name: "{{inputs.parameters.fezPasswordSecret}}" + key: "{{inputs.parameters.fezPasswordSecretKey}}" + 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 + log_user 0 + + spawn fez login + + expect ">>= Username*" { + send -- "$FEZ_USERNAME\r" + } + + expect ">>= Password*" { + send -- "$FEZ_PASSWORD\r" + } + + expect { + eof { + exit 0 + } + + "*Failed to login*" { + exit 1 + } + } + EOF + + printf "\n" + + expect <<-EOF + set timeout 60 + + spawn fez upload --dry-run + + expect { + "*ERROR*" { + exit 1 + } + + eof { + exit 0 } - eof { } } EOF + fez_exit=$? + + rm -fr -- sdist # Who in their right mind leaves trash on a dry-run + exit $fez_exit volumeMounts: - name: workdir mountPath: "{{inputs.parameters.workingDir}}" @@ -63,7 +188,7 @@ spec: persistentVolumeClaim: claimName: "{{inputs.parameters.workingPVC}}" - - name: prove + - name: qa-prove inputs: parameters: - name: workingDir 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 index 9c2eca2..465311b 100644 --- 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 @@ -46,7 +46,7 @@ spec: - name: size value: 1Gi - name: storageClass - value: longhorn-nonreplicated + value: longhorn - name: namePrefix value: argo- outputs: @@ -82,4 +82,26 @@ spec: kind: PersistentVolumeClaim metadata: name: "{{inputs.parameters.name}}" + + - name: qa-reuse + inputs: + parameters: + - name: workingDir + value: "/work" + - name: workingPVC + value: "" + script: + image: fsfe/reuse + command: + - sh + source: | + cd -- "{{inputs.parameters.workingDir}}" + reuse lint + volumeMounts: + - name: workdir + mountPath: "{{inputs.parameters.workingDir}}" + volumes: + - name: workdir + persistentVolumeClaim: + claimName: "{{inputs.parameters.workingPVC}}" ... -- cgit v1.1