【发布时间】:2023-01-30 00:06:18
【问题描述】:
该脚本位于./bin/deploy.sh 并使用 SSH 密钥连接到服务器。
我在 package.json 中有一个名为 npm run deploy:prod 的脚本,它运行这个 bash 脚本。
当有人推送或合并 PR 到 master 时,我需要什么让 GitHub 自动运行这个脚本?
这是我的deploy.sh脚本:
#!/usr/bin/env bash
. $HOME/.bashrc
. .env
. .env.local
args=(-azvP --delete --exclude=node_modules --exclude=.idea --exclude=.git)
hosts=($HOST_DOMAIN) # tornado lightning thunder tundra jefferson
dry=() #add --dry-run to enable testing
user=$HOST_USER
name=$HOST_PATH
project=$HOST_PROJECT
for host in "${hosts[@]}"
do
echo ""
date
echo "---------------------"
echo "syncing ${host}"
echo "---------------------"
rsync ${dry[@]} ${args[@]} ./ ${user}@${host}:www/${name}/${project}
ssh -t ${user}@${host} \$HOME/www/${name}/${project}/bin/post-deploy.sh
done
version=$(jq -r .version package.json)
say "$HOST_PROJECT is live!"
exit
这是我在服务器上执行的 post-deploy.sh 脚本:
#!/usr/bin/env bash
cd "$(dirname "$0")/.."
. $HOME/.bashrc
. .env
. .env.local
host=$HOST_DOMAIN
name=$HOST_PATH
project=$HOST_PROJECT
echo "current name: $name"
cd $HOME/www/${name}/${project}
nvm install v18
node -v
npm -v
npm i
sudo /etc/init.d/nginx reload
sudo systemctl daemon-reload
sudo systemctl restart ${META_SERVICE}
【问题讨论】:
标签: github