aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2020-08-10 12:15:49 -0300
committerEuAndreh <eu@euandre.org>2020-08-10 12:45:43 -0300
commit100ab568e3aeb512e86fd1155a73454d22e24895 (patch)
tree1d7ff9168b8cfc60e173f2a19f30938bc68d0f6e /scripts/ci
parentWIP: Move to Vultr and NixOS (diff)
downloadserver-100ab568e3aeb512e86fd1155a73454d22e24895.tar.gz
server-100ab568e3aeb512e86fd1155a73454d22e24895.tar.xz
Migration: Remove Ansible and Docker code, move only to NixOS
Diffstat (limited to 'scripts/ci')
-rwxr-xr-xscripts/ci/deploy.sh105
-rwxr-xr-xscripts/ci/mail.sh51
-rwxr-xr-xscripts/ci/setup.sh26
3 files changed, 0 insertions, 182 deletions
diff --git a/scripts/ci/deploy.sh b/scripts/ci/deploy.sh
deleted file mode 100755
index 9be5758..0000000
--- a/scripts/ci/deploy.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash ../../shell.nix
-# shellcheck shell=bash
-set -Eeuo pipefail
-cd "$(dirname "${BASH_SOURCE[0]}")"
-cd ../../
-PROJECT_ROOT="${PWD}"
-
-finish-phase() {
- local -r exit_code="${?}"
-
- cd "${PROJECT_ROOT}"
-
- if [[ "${exit_code}" = 0 ]]; then
- echo "Finished successfully."
- else
- echo "TRAPPED ERROR!"
- fi
- echo "Running final steps..."
-
- echo "Sending logs via email..."
- ./scripts/ci/mail.sh "${exit_code}"
- echo "Done."
-
- echo "Storing file changes to '.tfstate' files..."
- pushd ../vps-state/
- git add .
- git commit -m "CI: fallback add all after deploy.sh failure 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."
-
- echo "Finished cleanup."
-}
-trap finish-phase EXIT
-
-create-known-hosts-file() {
- echo "${TLD},$(terraform output public_floating_ip) ssh-rsa $(awk '{print $2}' < ./secrets/ssh/vps-box-server.pub)" > ./generated/generated-known-hosts.txt
-}
-
-echo "Interpolating files with envsubst..."
-envsubst < ./ssh.env.conf >> ~/.ssh/config
-envsubst < ./hosts.env > ./generated/hosts
-envsubst < ./docker-compose.env.yaml > ./generated/docker-compose.yaml
-envsubst < ./provision.env.yaml > ./generated/provision.yaml
-envsubst < ./scripts/box/user-data.env.sh > ./generated/user-data.sh
-envsubst < ./scripts/box/create-backup.env.sh > ./generated/create-backup.sh
-envsubst < ./scripts/box/restore-backup.env.sh > ./generated/restore-backup.sh
-echo "Done."
-
-echo "Running the Ansible shutdown.yaml playbook..."
-create-known-hosts-file
-ansible-playbook -v shutdown.yaml > ./logs/ansible-shutdown.txt
-echo "Done."
-
-echo "Initializing Terraform..."
-terraform --version
-terraform init
-echo "Done."
-
-if [[ "${DESTROY_VPS:-}" != "" ]]; then
- echo "Destroying existing infrastructure..."
- terraform destroy -input=false -auto-approve > ./logs/terraform-destroy.txt 2>&1
-else
- echo 'Refreshing view on existing infrastructure...'
- terraform refresh > ./logs/terraform-refresh.txt 2>&1
-fi
-echo "Done."
-
-echo "Running 'terraform plan' and storing the planfile..."
-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}" > ./logs/terraform-plan.txt 2>&1
-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}" > ./logs/terraform-apply.txt 2>&1
-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}" --allow-empty
-git push origin master
-popd
-echo "Done."
-
-echo "Running the Ansible provision.yaml playbook..."
-create-known-hosts-file
-cp ./generated/provision.yaml ./provision.yaml
-ansible-playbook -v provision.yaml > ./logs/ansible-provision.txt
-echo "Done."
diff --git a/scripts/ci/mail.sh b/scripts/ci/mail.sh
deleted file mode 100755
index 9caebd4..0000000
--- a/scripts/ci/mail.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env bash
-set -Eeuo pipefail
-cd "$(dirname "${BASH_SOURCE[0]}")"
-cd ../../
-
-EXIT_CODE="${1:-}"
-
-[[ -z "${EXIT_CODE}" ]] && {
- # shellcheck disable=SC2016
- echo 'Error: missing $EXIT positional argument.'
- exit 2
-}
-
-if [[ "${EXIT_CODE}" = 0 ]]; then
- SUBJECT_SUFFIX=' (successful build)'
-else
- SUBJECT_SUFFIX=' (FAILED BUILD)'
-fi
-
-SUBJECT="VPS CI run #${JOB_ID} logs${SUBJECT_SUFFIX}"
-ATTACHMENT_PATH='logs.txt'
-BODY=$(cat <<EOF
-CI run for commit ${VPS_COMMIT_SHA}.
-See run:
-https://builds.sr.ht/~euandreh/job/${JOB_ID}
-
-Logs are attached.
-
-EOF
-)
-
-tail -n +1 ./logs/*.txt > "${ATTACHMENT_PATH}"
-
-[[ "${USER}" = "build" ]] || {
- echo "Not running on CI."
- echo "Early exit on sending email logs."
- exit
-}
-
-gpg --always-trust \
- -r "${GPG_TO}" \
- -e "${ATTACHMENT_PATH}"
-
-curl "${MAILGUN_URL}" \
- -s \
- --user "${MAILGUN_USER}" \
- -F from="${MAILGUN_FROM}" \
- -F to="${MAILGUN_TO}" \
- -F subject="${SUBJECT}" \
- -F text="${BODY}" \
- -F attachment="@${ATTACHMENT_PATH}.gpg"
diff --git a/scripts/ci/setup.sh b/scripts/ci/setup.sh
deleted file mode 100755
index d876df7..0000000
--- a/scripts/ci/setup.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash ../../shell.nix
-# shellcheck shell=bash
-set -Eeuo pipefail
-cd "$(dirname "${BASH_SOURCE[0]}")"
-cd ../../
-
-echo "Unlocking git-crypt repos..."
-git crypt unlock
-# Assumes vps-state was already cloned
-pushd ../vps-state/
-git crypt unlock
-git remote set-url origin git@git.sr.ht:~euandreh/vps-state
-popd
-# git smudge after git-crypt clears file permissions
-chmod 400 ./secrets/ssh/vps-box-client
-echo "Done."
-
-echo "cd ./vps/ && source .envrc && cd ../" >> ~/.buildenv
-
-source .envrc
-
-git config --global user.email "${GIT_CI_USER}"
-git config --global user.name "sr.ht CI"
-
-curl https://euandre.org/public-key.txt | gpg --import