From d2dc78ae6aa592a0687f8421266996bb239a9163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Fri, 11 Mar 2022 15:43:50 +0100 Subject: [PATCH] Add backup and restore to CI (#3509) * Add backup and restore to CI * Update .github/workflows/builder.yml * -r * restore ssl * restart between * Make sure it actually installed * access .data --- .github/workflows/builder.yml | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml index 392ddf61c..c772b0d43 100644 --- a/.github/workflows/builder.yml +++ b/.github/workflows/builder.yml @@ -278,6 +278,12 @@ jobs: exit 1 fi + # Make sure it actually installed + test=$(docker exec hassio_cli ha addons info core_ssh --no-progress --raw-json | jq -r '.data.version') + if [[ "$test" == "null" ]]; then + exit 1 + fi + echo "Start Core SSH Add-on" test=$(docker exec hassio_cli ha addons start core_ssh --no-progress --raw-json | jq -r '.result') if [ "$test" != "ok" ]; then @@ -312,6 +318,58 @@ jobs: exit 1 fi + - name: Create full backup + id: backup + run: | + test=$(docker exec hassio_cli ha backups new --no-progress --raw-json) + if [ "$(echo $test | jq -r '.result')" != "ok" ]; then + exit 1 + fi + echo "::set-output name=slug::$(echo $test | jq -r '.data.slug')" + + - name: Uninstall SSH add-on + run: | + test=$(docker exec hassio_cli ha addons uninstall core_ssh --no-progress --raw-json | jq -r '.result') + if [ "$test" != "ok" ]; then + exit 1 + fi + + - name: Restart supervisor + run: | + test=$(docker exec hassio_cli ha supervisor restart --no-progress --raw-json | jq -r '.result') + if [ "$test" != "ok" ]; then + exit 1 + fi + + - name: Wait for Supervisor to come up + run: | + SUPERVISOR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' hassio_supervisor) + ping="error" + while [ "$ping" != "ok" ]; do + ping=$(curl -sSL "http://$SUPERVISOR/supervisor/ping" | jq -r '.result') + sleep 5 + done + + - name: Restore SSH add-on from backup + run: | + test=$(docker exec hassio_cli ha backups restore ${{ steps.backup.outputs.slug }} --addons core_ssh --no-progress --raw-json | jq -r '.result') + if [ "$test" != "ok" ]; then + exit 1 + fi + + # Make sure it actually installed + test=$(docker exec hassio_cli ha addons info core_ssh --no-progress --raw-json | jq -r '.data.version') + if [[ "$test" == "null" ]]; then + exit 1 + fi + + - name: Restore SSL directory from backup + run: | + test=$(docker exec hassio_cli ha backups restore ${{ steps.backup.outputs.slug }} --folders ssl --no-progress --raw-json | jq -r '.result') + if [ "$test" != "ok" ]; then + exit 1 + fi + - name: Get supervisor logs on failiure if: ${{ cancelled() || failure() }} run: docker logs hassio_supervisor