--- apiVersion: argoproj.io/v1alpha1 kind: WorkflowTemplate metadata: name: util-raku namespace: cicd-system spec: templates: - name: dist-fez inputs: parameters: - name: fezUsernameSecret value: "credentials-fez" - name: fezPasswordSecret value: "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 spawn fez login expect ">>= Username*" { send -- "$FEZ_USERNAME\r" } expect ">>= Password*" { log_user 0 send -- "$FEZ_PASSWORD\r" log_user 1 } expect { eof { exit 0 } "*Failed to login*" { exit 1 } } EOF printf "\n" expect <<-EOF set timeout 60 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: "credentials-fez" - name: fezPasswordSecret value: "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 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}}" volumes: - name: workdir persistentVolumeClaim: claimName: "{{inputs.parameters.workingPVC}}" - name: qa-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}}" ...