Demo about Edge Computing in the Retail vertical using Red Hat products
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

79 lines
2.5 KiB

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: flightctl-update-digest
spec:
params:
- name: image-name
type: string
- name: new-image-digest
type: string
- description: The label selector to identify the fleet(s) to update.
name: fleet-label-selector
type: string
default: ""
workspaces:
- description: An optional workspace that contains the flightctl configuration file (client.yaml).
name: flightctl-config
optional: true
steps:
- name: flightctl-update-digest
image: quay.io/nmasse-redhat/flightctl:latest
env:
- name: SCRIPT_DEBUG
value: "false"
- name: FLEET_LABEL_SELECTOR
value: "$(params.fleet-label-selector)"
- name: IMAGE_NAME
value: "$(params.image-name)"
- name: NEW_IMAGE_DIGEST
value: "$(params.new-image-digest)"
script: |
#!/bin/bash
set -Eeuo pipefail
# If debug is enabled, print out command that are executed
if [[ "${SCRIPT_DEBUG:-false}" == "true" ]]; then
set -x
fi
# Check if the fleet label selector is set
if [ -z "${FLEET_LABEL_SELECTOR}" ]; then
echo "FLEET_LABEL_SELECTOR is not set. No action taken."
exit 0
fi
# Print versions of the program we use
echo "=== Environment ==="
echo "---> bash"
bash --version
echo
echo "---> OS"
cat /etc/redhat-release
echo
echo "---> yq"
yq --version
echo
echo "---> Current user"
id
echo
echo "---> flightctl"
flightctl --config-dir $(workspaces.flightctl-config.path) version
echo
echo "---> config file"
ls -lZ $(workspaces.flightctl-config.path)
echo
# List fleets matching the label selector and update their image to the new digest
flightctl --config-dir $(workspaces.flightctl-config.path) get fleets --limit 0 -l "${FLEET_LABEL_SELECTOR}" -o name | while read -r fleet; do
echo "Updating fleet $fleet to image ${IMAGE_NAME}@${NEW_IMAGE_DIGEST}"
# Get the current fleet definition
flightctl --config-dir $(workspaces.flightctl-config.path) get fleet/$fleet -o yaml > /tmp/fleet.yaml
# Update the fleet definition with the new image
yq eval -i ".spec.template.spec.os.image = \"${IMAGE_NAME}@${NEW_IMAGE_DIGEST}\"" /tmp/fleet.yaml
# Apply the updated fleet definition
flightctl --config-dir $(workspaces.flightctl-config.path) apply -f /tmp/fleet.yaml
done