From 787a60024142cb1e6f5f85bbb6e0517a8113a1a3 Mon Sep 17 00:00:00 2001 From: Eric Nemchik Date: Fri, 28 Oct 2022 16:21:44 -0500 Subject: [PATCH] Fix migrations --- root/etc/cont-init.d/01-migrations | 37 ++++++++++++++++-------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/root/etc/cont-init.d/01-migrations b/root/etc/cont-init.d/01-migrations index aaf084a..37f5b78 100755 --- a/root/etc/cont-init.d/01-migrations +++ b/root/etc/cont-init.d/01-migrations @@ -1,4 +1,5 @@ -#!/bin/bash +#!/usr/bin/with-contenv bash +# shellcheck shell=bash MIGRATIONS_DIR="/migrations" MIGRATIONS_HISTORY="/config/.migrations" @@ -6,25 +7,27 @@ MIGRATIONS_HISTORY="/config/.migrations" echo "[migrations] started" if [[ ! -d ${MIGRATIONS_DIR} ]]; then - echo "[migrations] no migrations found" - exit + echo "[migrations] no migrations found" + exit fi for MIGRATION in $(find ${MIGRATIONS_DIR}/* | sort -n); do - NAME="$(basename "${MIGRATION}")" - if [[ -f ${MIGRATIONS_HISTORY} ]] && grep -Fxq "${NAME}" ${MIGRATIONS_HISTORY}; then - echo "[migrations] ${NAME}: skipped" - continue - fi - echo "[migrations] ${NAME}: executing..." - chmod +x "${MIGRATION}" - EXIT_CODE=$(/bin/bash "${MIGRATION}"; echo $?) - if [[ ${EXIT_CODE} -ne 0 ]]; then - echo "[migrations] ${NAME}: failed with exit code ${EXIT_CODE}, contact support" - exit "${EXIT_CODE}" - fi - echo "${NAME}" >> ${MIGRATIONS_HISTORY} - echo "[migrations] ${NAME}: succeeded" + NAME="$(basename "${MIGRATION}")" + if [[ -f ${MIGRATIONS_HISTORY} ]] && grep -Fxq "${NAME}" ${MIGRATIONS_HISTORY}; then + echo "[migrations] ${NAME}: skipped" + continue + fi + echo "[migrations] ${NAME}: executing..." + chmod +x "${MIGRATION}" + # Execute migration script in a subshell to prevent it from modifying the current environment + ("${MIGRATION}") + EXIT_CODE=$? + if [[ ${EXIT_CODE} -ne 0 ]]; then + echo "[migrations] ${NAME}: failed with exit code ${EXIT_CODE}, contact support" + exit "${EXIT_CODE}" + fi + echo "${NAME}" >>${MIGRATIONS_HISTORY} + echo "[migrations] ${NAME}: succeeded" done echo "[migrations] done"