#!/usr/bin/env nix-shell #!nix-shell -i bash ../../shell.nix # shellcheck shell=bash set -Eeuo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" cd ../../ VPS_COMMIT_SHA="$(git rev-parse HEAD)" export VPS_COMMIT_SHA echo "Shutting down running containers and backing up data..." ssh "$TLD" "cd /home/vps/ && docker-compose down" scp ./secrets/borg_remote.pub "$TLD":/root/.ssh/id_rsa.pub scp ./secrets/borg_remote "$TLD":/root/.ssh/id_rsa envsubst < ./scripts/box/run-backup-template.sh | ssh "$TLD" 'cat > /home/vps/run-backup.sh && chmod +x /home/vps/run-backup.sh' ssh "$TLD" /home/vps/run-backup.sh echo "Done." echo "Running 'terraform plan' and storing the planfile..." # Terraform plan terraform --version terraform init mkdir -p "../vps-state/secrets/plan-files/" PLAN_FILE_NAME="$(date -Iseconds)-$VPS_COMMIT_SHA.tfplan" PLAN_FILE_PATH="../vps-state/secrets/plan-files/$PLAN_FILE_NAME" terraform plan -input=false -out="$PLAN_FILE_PATH" # Store on git repo pushd ../vps-state/ git add "secrets/plan-files/$PLAN_FILE_NAME" git commit -m "CI: add .tfplan plan file for CI run $VPS_COMMIT_SHA" git push origin master popd echo "Done." echo "Running 'terraform apply'..." terraform apply -input=false -auto-approve "$PLAN_FILE_PATH" echo "Done." echo "Storing .tfstate file..." pushd ../vps-state/ git add secrets/terraform.tfstate secrets/terraform.tfstate.backup git commit -m "CI: update Terraform .tfstate files for CI run $VPS_COMMIT_SHA" git push origin master popd echo "Done." echo "Locking git-crypt repositories back..." git crypt lock pushd ../vps-state/ git crypt lock popd echo "Done."