summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2023-09-08 19:47:34 +0200
committerPatrick Spek <p.spek@tyil.nl>2023-09-08 19:47:34 +0200
commit96c6679bebf8bca7e4a816215d0c34091bd701f7 (patch)
tree2db2584583a973bad33743ece5f26b6ab85c052c
parent8d838598b9a0d672ee6775cb2f03447fd8095366 (diff)
Commit workflow for raku modules
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic-raku.yaml33
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/generic.yaml43
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util-raku.yaml137
-rw-r--r--data.d/k3s-master/manifests.d/tyilnet/cicd-system/resources/workflow-templates/util.yaml24
4 files changed, 226 insertions, 11 deletions
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}}"
...