Git挂钩环境变量丢失

时间:2017-06-23 13:32:02

标签: git bash digital-ocean githooks pm2

我正在为Digital Ocean上的节点应用创建一个自定义构建系统,它涉及git钩子来安装依赖项并启动应用程序。部分app app从环境变量中读取敏感数据(无法检入repo)。在我的git hook中,我使用外部脚本停止应用程序,复制repo文件(从SOURCE_REPOSOURCE_DIR(应该更好地命名变量)并重新启动应用程序:

# hooks/post-receive
# go to the www repo and stop the app
cd $SOURCE_DIR
if [ -f tools/staging-stop.sh ]; then
    echo "Stopping the staging app..."
    tools/staging-stop.sh
fi

cd $SOURCE_REPO
git --work-tree=${SOURCE_DIR} checkout --force
cd $SOURCE_DIR

if [ -f tools/staging-start.sh ]; then
    echo "Starting the staging app..."
    tools/staging-start.sh
fi


# tools/staging-stop.sh
node_modules/.bin/pm2 stop staging
# updates env vars
node_modules/.bin/pm2 delete staging

# tools/stating-start.sh
source /etc/profile.d/my_env_vars.sh
yarn install --production=true
NODE_ENV=staging node_modules/.bin/pm2 start build/index.js --name staging

然而,由于我无法确定的原因,当git hook启动应用程序时,/etc/profile.d/my_env_vars.sh中的环境变量(我认为应该可以在不获取它们的情况下使用)不存在。但是,如果我ssh进入服务器并使用pm2手动启动应用程序,环境变量可用,所以我猜这与git hook本身及它启动的shell类型有关。

我真的很感激这方面的帮助。

0 个答案:

没有答案