From 898c482172491c285e37bf2126a347e8247bec62 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 21 Nov 2024 15:32:20 +0100 Subject: [PATCH] script to build and place docs --- run_docs.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 run_docs.sh diff --git a/run_docs.sh b/run_docs.sh new file mode 100644 index 0000000..78d5a7f --- /dev/null +++ b/run_docs.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +exec >> /home/azureuser/dbt_docs.log 2>&1 + +# Define the Slack webhook URL +script_dir=$(dirname "$0") +webhooks_file="slack_webhook_urls.txt" +env_file="$script_dir/$webhooks_file" +if [ -f "$env_file" ]; then + export $(grep -v '^#' "$env_file" | xargs) +else + echo "Error: $webhooks_file file not found in the script directory." + exit 1 +fi + +# Messages to be sent to Slack +slack_failure_message=":rotating_light::rotating_light::rotating_light: One or more failures in dbt docs build in production. :rotating_light::rotating_light::rotating_light:" +slack_success_message=":white_check_mark::white_check_mark::white_check_mark: dbt docs built successfully in production. :white_check_mark::white_check_mark::white_check_mark:" + +# Initialize the failure flag +has_any_step_failed=0 + +cd /home/azureuser/data-dwh-dbt-project + +# Update from git +echo "Updating dbt project from git." +git checkout master +git pull + +# Activate venv +source venv/bin/activate + +# Run tests +echo "Triggering dbt docs generate" +dbt docs generate +if [ $? -ne 0 ]; then + has_any_step_failed=1 +fi + + +# Read the first argument as the target directory +docs_final_target_directory=$1 + +# Check if the target directory is provided +if [ -z "$docs_final_target_directory" ]; then + echo "Error: No target directory provided." + exit 1 +fi + +# Copy the generated docs to the target directory +echo "Copying generated docs to $docs_final_target_directory." +cp -r target/* "$docs_final_target_directory" +if [ $? -ne 0 ]; then + has_any_step_failed=1 +fi + +# Check if any step failed and send a Slack message +if [ $has_any_step_failed -eq 1 ]; then + curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$slack_failure_message\"}" $SLACK_ALERT_WEBHOOK_URL +fi +if [ $has_any_step_failed -eq 0 ]; then + curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$slack_success_message\"}" $SLACK_RECEIPT_WEBHOOK_URL +fi \ No newline at end of file