2024-06-13 18:21:18 +02:00
#!/bin/bash
# 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 `xexe` run in production. :rotating_light::rotating_light::rotating_light:"
slack_success_message = ":white_check_mark::white_check_mark::white_check_mark: `xexe` run executed 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-xexe
# Update from git
2024-06-13 19:18:40 +02:00
echo "Updating xexe project from git." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
#git checkout master | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >> /home/azureuser/xexe_run.log 2>&1
#git pull | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >> /home/azureuser/xexe_run.log 2>&1
2024-06-13 18:21:18 +02:00
# Activate venv
2024-06-13 19:18:40 +02:00
poetry shell
2024-06-13 18:21:18 +02:00
# DWH-healthcheck
echo "Running DWH healthcheck..." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
xexe dwh-healthcheck | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
if [ $? -ne 0 ] ; then
has_any_step_failed = 1
echo "Something went wrong when healthchecking DWH." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
fi
# xe healthcheck
echo "Running XE.com healthcheck..." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
xexe xe-healthcheck | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
if [ $? -ne 0 ] ; then
has_any_step_failed = 1
echo "Something went wrong when healthchecking xe.com." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
fi
2024-06-13 19:18:40 +02:00
# Define some options here. You might want to change this some day.
currencies = "CAD,EUR,NZD,ZAR,AUD,USD,PLN,GBP"
start_date = $( date -d "yesterday" +"%Y-%m-%d" )
end_date = $( date -d "yesterday" +"%Y-%m-%d" )
2024-06-13 18:21:18 +02:00
# run the actual thing
echo "Getting rates from xe.com..." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
2024-06-13 19:18:40 +02:00
xexe get-rates --currencies " $currencies " --start-date " $start_date " --end-date " $end_date " --rates-source xe --output dwh --ignore-warnings | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 1
2024-06-13 18:21:18 +02:00
if [ $? -ne 0 ] ; then
has_any_step_failed = 1
echo "Something went wrong when getting rates." | while IFS = read -r line; do printf '%s %s\n' " $( date) " " $line " ; done >> /home/azureuser/xexe_run.log 2>& 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