From 08cabb91881b214fc5eb414d94deb2e4d46cbac0 Mon Sep 17 00:00:00 2001 From: Amit Singh Date: Mon, 5 Jun 2023 21:46:15 +0530 Subject: [PATCH 1/3] addds triggerserive to monitor image updates example Signed-off-by: Amit Singh --- config/definition/image-update-task.yaml | 91 +++++++++++++++++++++++ examples/triggerservice-image-update.yaml | 31 ++++++++ 2 files changed, 122 insertions(+) create mode 100644 config/definition/image-update-task.yaml create mode 100644 examples/triggerservice-image-update.yaml diff --git a/config/definition/image-update-task.yaml b/config/definition/image-update-task.yaml new file mode 100644 index 0000000..76856f0 --- /dev/null +++ b/config/definition/image-update-task.yaml @@ -0,0 +1,91 @@ +apiVersion: core.oam.dev/v1alpha1 +kind: Definition +metadata: + name: image-update-task + namespace: vela-system +spec: + type: trigger-action + templates: + # create a Job resource as an action in the same namespace as the source (by default) + main.cue: | + import ( + "vela/kube" + ) + + apply: kube.#Apply & { + $params: { + resource: { + apiVersion: "batch/v1" + kind: "Job" + metadata: { + name: context.data.metadata.name + namespace: parameter.namespace + if context.data.metadata.labels != _|_ { + labels: context.data.metadata.labels + } + ownerReferences: [ + { + apiVersion: context.data.apiVersion + kind: context.data.kind + name: context.data.metadata.name + uid: context.data.metadata.uid + controller: true + }, + ] + } + + spec: { + if parameter.ttlSecondsAfterFinished != _|_ { + ttlSecondsAfterFinished: parameter.ttlSecondsAfterFinished + } + + template: { + spec: { + restartPolicy: parameter.restart + containers: [{ + name: context.data.metadata.name + image: parameter.image + command: parameter.cmd + + env: [{ + name: "SOURCE_NAME" + value: context.data.metadata.name + },{ + name: "SOURCE_NAMESPACE" + value: context.data.metadata.namespace + }, + if parameter.env != _|_ { + parameter.env + }] + }] + } + } + } + } + } + } + + parameter: { + // +usage=The image to run the job container on + image: string + + // +usage=The namespace to create the Job in + namespace: *context.data.metadata.namespace | string + + // +usage=Define the job restart policy, the value can only be Never or OnFailure. By default, it's Never. + restart: *"Never" | string + + // +usage=Number of seconds to wait before a successfully completed job is cleaned up + ttlSecondsAfterFinished?: uint + + // +usage=Commands to run in the container + cmd: [...string] + + // +usage=Define evironment variables for the Job container + env?: [...{ + // +usage=Name of the environment variable + name: string + // +usage=Value of the environment variable + value: string + }] + } \ No newline at end of file diff --git a/examples/triggerservice-image-update.yaml b/examples/triggerservice-image-update.yaml new file mode 100644 index 0000000..5acf54f --- /dev/null +++ b/examples/triggerservice-image-update.yaml @@ -0,0 +1,31 @@ +apiVersion: standard.oam.dev/v1alpha1 +kind: TriggerService +metadata: + name: image-rebase-trigger + namespace: default +spec: + triggers: + - source: + # source is all the kpack Image resources in all the namespaces + type: resource-watcher + properties: + apiVersion: kpack.io/v1alpha2 + # kpack needs to be installed on the cluster to have this resource type + kind: Image + events: + - update + + # only trigger action when an Image is successfully rebased + filter: > + context.data.status.latestBuildReason == "STACK" && context.data.status.conditions[0].status == "True" + + action: + type: image-update-task + properties: + cmd: [/bin/sh, -c, "echo Image: ${SOURCE_NAME} in namespace: ${SOURCE_NAMESPACE} has been successfully rebased at $(date)"] + env: + - name: TEST_KEY + value: TEST_VALUE + image: busybox + name: image-update-task + ttlSecondsAfterFinished: 600 From cb3c66725c90a1b01ad57a7f54850030416b1613 Mon Sep 17 00:00:00 2001 From: Amit Singh Date: Wed, 7 Jun 2023 21:59:04 +0530 Subject: [PATCH 2/3] updates trigger action to optionally take pod env vars Signed-off-by: Amit Singh --- config/definition/image-update-task.yaml | 27 +++++++++++++++-------- examples/triggerservice-image-update.yaml | 3 --- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/config/definition/image-update-task.yaml b/config/definition/image-update-task.yaml index 76856f0..30f2e29 100644 --- a/config/definition/image-update-task.yaml +++ b/config/definition/image-update-task.yaml @@ -47,16 +47,25 @@ spec: image: parameter.image command: parameter.cmd - env: [{ - name: "SOURCE_NAME" - value: context.data.metadata.name - },{ - name: "SOURCE_NAMESPACE" - value: context.data.metadata.namespace - }, + if parameter.env == _|_ { + env: [{ + name: "SOURCE_NAME" + value: context.data.metadata.name + },{ + name: "SOURCE_NAMESPACE" + value: context.data.metadata.namespace + }] + } + if parameter.env != _|_ { - parameter.env - }] + env: [{ + name: "SOURCE_NAME" + value: context.data.metadata.name + },{ + name: "SOURCE_NAMESPACE" + value: context.data.metadata.namespace + }] + parameter.env + } }] } } diff --git a/examples/triggerservice-image-update.yaml b/examples/triggerservice-image-update.yaml index 5acf54f..e6a38dc 100644 --- a/examples/triggerservice-image-update.yaml +++ b/examples/triggerservice-image-update.yaml @@ -23,9 +23,6 @@ spec: type: image-update-task properties: cmd: [/bin/sh, -c, "echo Image: ${SOURCE_NAME} in namespace: ${SOURCE_NAMESPACE} has been successfully rebased at $(date)"] - env: - - name: TEST_KEY - value: TEST_VALUE image: busybox name: image-update-task ttlSecondsAfterFinished: 600 From a6fbe7c80fbe71127bfdaafbe199cddd10002bd3 Mon Sep 17 00:00:00 2001 From: Amit Singh Date: Tue, 13 Jun 2023 22:42:34 +0530 Subject: [PATCH 3/3] updates trigger action definition name Signed-off-by: Amit Singh --- config/definition/{image-update-task.yaml => task.yaml} | 9 ++++++--- examples/triggerservice-image-update.yaml | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) rename config/definition/{image-update-task.yaml => task.yaml} (94%) diff --git a/config/definition/image-update-task.yaml b/config/definition/task.yaml similarity index 94% rename from config/definition/image-update-task.yaml rename to config/definition/task.yaml index 30f2e29..afc48ab 100644 --- a/config/definition/image-update-task.yaml +++ b/config/definition/task.yaml @@ -1,7 +1,7 @@ apiVersion: core.oam.dev/v1alpha1 kind: Definition metadata: - name: image-update-task + name: task namespace: vela-system spec: type: trigger-action @@ -18,7 +18,7 @@ spec: apiVersion: "batch/v1" kind: "Job" metadata: { - name: context.data.metadata.name + name: parameter.name namespace: parameter.namespace if context.data.metadata.labels != _|_ { labels: context.data.metadata.labels @@ -43,7 +43,7 @@ spec: spec: { restartPolicy: parameter.restart containers: [{ - name: context.data.metadata.name + name: parameter.name image: parameter.image command: parameter.cmd @@ -78,6 +78,9 @@ spec: // +usage=The image to run the job container on image: string + // +usage=Name of the cron job + name: *context.data.metadata.name | string + // +usage=The namespace to create the Job in namespace: *context.data.metadata.namespace | string diff --git a/examples/triggerservice-image-update.yaml b/examples/triggerservice-image-update.yaml index e6a38dc..f9857ee 100644 --- a/examples/triggerservice-image-update.yaml +++ b/examples/triggerservice-image-update.yaml @@ -20,7 +20,7 @@ spec: context.data.status.latestBuildReason == "STACK" && context.data.status.conditions[0].status == "True" action: - type: image-update-task + type: task properties: cmd: [/bin/sh, -c, "echo Image: ${SOURCE_NAME} in namespace: ${SOURCE_NAMESPACE} has been successfully rebased at $(date)"] image: busybox