From d8dc1c917a024e8fabd2305b316eead6fdc02df2 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Fri, 16 Aug 2024 11:29:20 +0200 Subject: [PATCH] production script --- README.md | 2 ++ run_anaxi.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 run_anaxi.sh diff --git a/README.md b/README.md index 014ba59..c2c52a3 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,8 @@ anaxi sync-stream --stream-id highest_synced_timestamp: '2024-08-16T9:02:23+00:00' ``` +The internal logs of `anaxi` will be found in `~/.anaxi/anaxi.log`. The logs of the script will be at `~/anaxi_run.log`. + ## Relevant internals and implementation details ### Tracking checkpoints diff --git a/run_anaxi.sh b/run_anaxi.sh new file mode 100644 index 0000000..f5fb236 --- /dev/null +++ b/run_anaxi.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +exec >> /home/azureuser/anaxi_run.log 2>&1 + +echo "Starting script at $(date)" + +# 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 anaxi run in production. :rotating_light::rotating_light::rotating_light:" +slack_success_message=":white_check_mark::white_check_mark::white_check_mark: anaxi 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-anaxi + +# Update from git +echo "Updating anaxi project from git." +git checkout master +git pull + +# Make poetry available +echo "Including Poetry in PATH" +export PATH="$HOME/.local/bin:$PATH" + +# DWH-healthcheck +echo "Running DWH healthcheck..." +poetry run anaxi postgres-healthcheck --postgres-database dwh +if [ $? -ne 0 ]; then + has_any_step_failed=1 + echo "Something went wrong when healthchecking DWH." +fi + +# Define some options here. You might want to change this some day. +currencies="CAD,EUR,NZD,ZAR,AUD,USD,PLN,GBP,CHF" +start_date=$(date -d "yesterday" +"%Y-%m-%d") +end_date=$(date -d "yesterday" +"%Y-%m-%d") + +# Actually run syncs +streams=( + "some-stream" + "another-stream" +) + +for stream in "${streams[@]}"; do + echo "Starting sync for stream $stream" + poetry run anaxi sync-stream --stream-id $stream + if [ $? -ne 0 ]; then + has_any_step_failed=1 + echo "Something went wrong when syncing stream: $stream." +fi +done + +# 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