cue modules: move stdlib to pkg/alpha.dagger.io
In preparation for Europa, we will vendor multiple CUE modules: - `pkg/alpha.dagger.io`: legacy non-europa packages - `pkg/dagger.io`: core Europa packages - `pkg/universe.dagger.io`: Europa universe Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
143
pkg/alpha.dagger.io/kubernetes/helm/helm.cue
Normal file
143
pkg/alpha.dagger.io/kubernetes/helm/helm.cue
Normal file
@@ -0,0 +1,143 @@
|
||||
// Helm package manager
|
||||
package helm
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"alpha.dagger.io/dagger"
|
||||
"alpha.dagger.io/dagger/op"
|
||||
"alpha.dagger.io/kubernetes"
|
||||
)
|
||||
|
||||
// Install a Helm chart
|
||||
#Chart: {
|
||||
|
||||
// Helm deployment name
|
||||
name: dagger.#Input & {string}
|
||||
|
||||
// Helm chart to install from source
|
||||
chartSource: *null | dagger.#Artifact
|
||||
|
||||
// Helm chart to install from repository
|
||||
chart: dagger.#Input & {*null | string}
|
||||
|
||||
// Helm chart repository
|
||||
repository: dagger.#Input & {*null | string}
|
||||
|
||||
// Helm values (either a YAML string or a Cue structure)
|
||||
values: dagger.#Input & {*null | string}
|
||||
|
||||
// Kubernetes Namespace to deploy to
|
||||
namespace: dagger.#Input & {string}
|
||||
|
||||
// Helm action to apply
|
||||
action: dagger.#Input & {*"installOrUpgrade" | "install" | "upgrade"}
|
||||
|
||||
// time to wait for any individual Kubernetes operation (like Jobs for hooks)
|
||||
timeout: dagger.#Input & {string | *"5m"}
|
||||
|
||||
// if set, will wait until all Pods, PVCs, Services, and minimum number of
|
||||
// Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state
|
||||
// before marking the release as successful.
|
||||
// It will wait for as long as timeout
|
||||
wait: dagger.#Input & {*true | bool}
|
||||
|
||||
// if set, installation process purges chart on fail.
|
||||
// The wait option will be set automatically if atomic is used
|
||||
atomic: dagger.#Input & {*true | bool}
|
||||
|
||||
// Kube config file
|
||||
kubeconfig: dagger.#Input & {string | dagger.#Secret}
|
||||
|
||||
// Helm version
|
||||
version: dagger.#Input & {*"3.5.2" | string}
|
||||
|
||||
// Kubectl version
|
||||
kubectlVersion: dagger.#Input & {*"v1.19.9" | string}
|
||||
|
||||
#up: [
|
||||
op.#Load & {
|
||||
from: kubernetes.#Kubectl & {
|
||||
version: kubectlVersion
|
||||
}
|
||||
},
|
||||
op.#Exec & {
|
||||
env: HELM_VERSION: version
|
||||
args: [
|
||||
"/bin/bash",
|
||||
"--noprofile",
|
||||
"--norc",
|
||||
"-eo",
|
||||
"pipefail",
|
||||
"-c",
|
||||
#"""
|
||||
# Install Yarn
|
||||
curl -sfL -S https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | \
|
||||
tar -zx -C /tmp && \
|
||||
mv /tmp/linux-amd64/helm /usr/local/bin && \
|
||||
chmod +x /usr/local/bin/helm
|
||||
"""#,
|
||||
]
|
||||
},
|
||||
op.#Mkdir & {
|
||||
path: "/helm"
|
||||
},
|
||||
op.#WriteFile & {
|
||||
dest: "/entrypoint.sh"
|
||||
content: #code
|
||||
},
|
||||
|
||||
if (kubeconfig & string) != _|_ {
|
||||
op.#WriteFile & {
|
||||
dest: "/kubeconfig"
|
||||
content: kubeconfig
|
||||
mode: 0o600
|
||||
}
|
||||
},
|
||||
|
||||
if chart != null {
|
||||
op.#WriteFile & {
|
||||
dest: "/helm/chart"
|
||||
content: chart
|
||||
}
|
||||
},
|
||||
if values != null {
|
||||
op.#WriteFile & {
|
||||
dest: "/helm/values.yaml"
|
||||
content: values
|
||||
}
|
||||
},
|
||||
op.#Exec & {
|
||||
always: true
|
||||
args: [
|
||||
"/bin/bash",
|
||||
"--noprofile",
|
||||
"--norc",
|
||||
"-eo",
|
||||
"pipefail",
|
||||
"/entrypoint.sh",
|
||||
]
|
||||
env: {
|
||||
KUBECONFIG: "/kubeconfig"
|
||||
KUBE_NAMESPACE: namespace
|
||||
|
||||
if repository != null {
|
||||
HELM_REPO: repository
|
||||
}
|
||||
HELM_NAME: name
|
||||
HELM_ACTION: action
|
||||
HELM_TIMEOUT: timeout
|
||||
HELM_WAIT: strconv.FormatBool(wait)
|
||||
HELM_ATOMIC: strconv.FormatBool(atomic)
|
||||
}
|
||||
mount: {
|
||||
if chartSource != null && chart == null {
|
||||
"/helm/chart": from: chartSource
|
||||
}
|
||||
if (kubeconfig & dagger.#Secret) != _|_ {
|
||||
"/kubeconfig": secret: kubeconfig
|
||||
}
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user