data-dwh-dbt-project/run_dbt.sh

67 lines
1.8 KiB
Bash
Raw Normal View History

2024-02-06 12:09:47 +01:00
#!/bin/bash
2024-08-26 12:55:51 +02:00
exec >> /home/azureuser/dbt_run.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 during scheduled dbt run in production. :rotating_light::rotating_light::rotating_light:"
slack_success_message=":white_check_mark::white_check_mark::white_check_mark: dbt run executed successfully in production. :white_check_mark::white_check_mark::white_check_mark:"
# Initialize the failure flag
has_any_step_failed=0
2024-02-06 12:09:47 +01:00
cd /home/azureuser/data-dwh-dbt-project
# Update from git
2024-08-26 12:55:51 +02:00
echo "Updating dbt project from git."
git checkout master
git pull
2024-02-06 12:09:47 +01:00
# Activate venv
source venv/bin/activate
2024-03-06 12:07:51 +01:00
# Run seeds
2024-08-26 12:55:51 +02:00
echo "Triggering dbt seed"
dbt seed
if [ $? -ne 0 ]; then
has_any_step_failed=1
fi
2024-03-06 12:07:51 +01:00
2024-05-10 00:31:27 +02:00
# Run staging layer
2024-08-26 12:55:51 +02:00
echo "Triggering dbt run: Staging"
dbt run -s models/staging
if [ $? -ne 0 ]; then
has_any_step_failed=1
fi
2024-05-10 00:31:27 +02:00
# Run intermediate layer
2024-08-26 12:55:51 +02:00
echo "Triggering dbt run: Intermediate"
dbt run -s models/intermediate
if [ $? -ne 0 ]; then
has_any_step_failed=1
fi
2024-05-10 00:31:27 +02:00
# Run reporting layer
2024-08-26 12:55:51 +02:00
echo "Triggering dbt run: Reporting"
dbt run -s models/reporting
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