62 lines
1.6 KiB
YAML
62 lines
1.6 KiB
YAML
apiVersion: tekton.dev/v1
|
|
kind: Task
|
|
metadata:
|
|
name: before-pipeline
|
|
spec:
|
|
params:
|
|
- name: persistence
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
volumeName:
|
|
type: string
|
|
namespace:
|
|
type: string
|
|
storageClass:
|
|
type: string
|
|
accessModes:
|
|
type: array
|
|
size:
|
|
type: string
|
|
default:
|
|
enabled: false
|
|
volumeName: "data"
|
|
namespace: "default"
|
|
storageClass: ""
|
|
accessModes:
|
|
- "ReadWriteOnce"
|
|
size: "1Gi"
|
|
results:
|
|
- name: pvcName
|
|
description: Name of the created PVC (if enabled)
|
|
steps:
|
|
- name: create-pvc-if-enabled
|
|
image: bitnami/kubectl:latest
|
|
script: |
|
|
#!/usr/bin/env bash
|
|
|
|
if [ "$(params.persistence.enabled)" == "true" ]; then
|
|
pvcName="$(params.persistence.volumeName)-$(context.taskRun.uid)"
|
|
cat <<EOF | kubectl apply -f -
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: $pvcName
|
|
namespace: $(params.persistence.namespace)
|
|
spec:
|
|
accessModes:
|
|
$(for mode in $(params.persistence.accessModes); do echo " - $mode"; done)
|
|
resources:
|
|
requests:
|
|
storage: $(params.persistence.size)
|
|
storageClassName: $(params.persistence.storageClass)
|
|
EOF
|
|
echo "PVC $pvcName created."
|
|
echo -n "$pvcName" > /tekton/results/pvcName
|
|
else
|
|
echo "Persistence disabled, no PVC created."
|
|
echo -n "" > /tekton/results/pvcName
|
|
fi
|
|
|