#!/bin/bash # Info: Script to run provisioning (Provisioning) from a webhook call # Author: JesusPerezLorenzo # Release: 1.0.2 # Date: 19-11-2023 # USAGE="on_webhook_provisioning env-fils" [ "$1" == "-h" ] && echo "$USAGE" && exit [ "$1" == "-i" ] || [ "$2" == "-i" ] && echo "$(basename "$0") $(grep "^# Info:" "$0" | sed "s/# Info: //g") " && exit [ "$1" == "-v" ] || [ "$2" == "-v" ] && grep "^# Release:" "$0" | sed "s/# Release: //g" && exit set -x set +o errexit set +o pipefail ROOT_PATH=$(dirname "$0") [ -z "$1" ] && echo "No env path found to load settings" && exit 1 . "$1" [ -r "$HOME/env-provisioning" ] && . "$HOME/env-provisioning" PROVISIONING_CMD=$(type -P provisioning) [ -z "$PROVISIONING_CMD" ] && echo "provisioning command not found" && exit 1 PROVIISONING_KLOUD=${PROVIISONING_KLOUD:-$HOME/kloud} ORG=$(pwd) [ -z "$REPO_SSH_URL" ] && echo "No REPO_SSH_URL found" && exit 1 [ -z "$REPO_FULLNAME" ] && echo "No REPO_FULLNAME found" && exit 1 REPO_DIR=$(dirname "$REPO_FULLNAME") REPO_NAME=$(basename "$REPO_FULLNAME") [ -z "$REPO_DIR" ] && [ -z "$REPO_NAME "] && echo "Error REPO_FULLNAME" && exit 1 [ ! -d "$PROVIISONING_KLOUD/$REPO_DIRNAME" ] && mkdir -p "$PROVIISONING_KLOUD/$REPO_DIRNAME" cd "$PROVIISONING_KLOUD/$REPO_DIRNAME" if [ ! -d "$REPO_NAME" ] ; then if ! git clone --recurse-submodules "$REPO_SSH_URL" ; then echo "Error clone $REPO_SSH_URL" exit 1 fi cd "$REPO_NAME" else cd "$REPO_NAME" git pull 2>/dev/null fi [ -z "$RUN_COMMIT_MSG" ] && exit 0 [ -r "./env-provisioning" ] && . "./env-provisioning" WK_LOG_RUN=/tmp/on_provisioning_log.$$ WK_ERR_RUN=/tmp/on_provisioning_err.$$ # Check if AI webhook processing is enabled and message should be processed by AI if [ -n "$WEBHOOK_AI_ENABLED" ] && [ "$WEBHOOK_AI_ENABLED" = "true" ] && [ -n "$WEBHOOK_MESSAGE" ]; then # Process webhook message with AI first AI_RESULT=$(nu -c " use core/nulib/lib_provisioning/webhook/ai_webhook.nu test_webhook test_webhook '$WEBHOOK_MESSAGE' --platform '${WEBHOOK_PLATFORM:-generic}' --user '${WEBHOOK_USER:-webhook}' --channel '${WEBHOOK_CHANNEL:-webhook}' " 2>/dev/null) if [ $? -eq 0 ]; then echo "AI processed webhook message: $WEBHOOK_MESSAGE" >> "$WK_LOG_RUN" echo "AI result: $AI_RESULT" >> "$WK_LOG_RUN" fi fi $PROVISIONING_CMD $RUN_COMMIT_MSG >"$WK_LOG_RUN" 2>"$WK_ERR_RUN" mv "$WK_LOG_RUN" run.log mv "$WK_ERR_RUN" error.log git add * git commit -m "chore: running form on_webhook_provisioning: \"$RUN_COMMIT_MSG\"" if ! git push ; then echo "Error push $REPO_SSH_URL" exit 1 fi