45 lines
1.6 KiB
YAML
45 lines
1.6 KiB
YAML
name: Deploy
|
||
|
||
on:
|
||
push:
|
||
branches: [main, v2]
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: aliyun
|
||
steps:
|
||
- name: Deploy
|
||
run: |
|
||
GIT_URL="http://8.161.227.145:3000/XEngineers/CamTalk.git"
|
||
if [ -d /root/camtalk/.git ]; then
|
||
cd /root/camtalk
|
||
git fetch "$GIT_URL" ${GITHUB_REF_NAME} --depth=1
|
||
git reset --hard FETCH_HEAD
|
||
else
|
||
git clone --depth=1 --branch ${GITHUB_REF_NAME} \
|
||
http://8.161.227.145:3000/XEngineers/CamTalk.git /tmp/camtalk-deploy
|
||
mkdir -p /root/camtalk
|
||
rsync -a --delete \
|
||
--exclude='.env' \
|
||
--exclude='pgdata' \
|
||
--exclude='redisdata' \
|
||
/tmp/camtalk-deploy/ /root/camtalk/
|
||
rm -rf /tmp/camtalk-deploy
|
||
fi
|
||
|
||
# 始终从宿主机同步最新的 .env(通过 docker 桥接,绕过 CI 容器文件系统限制)
|
||
docker run --rm \
|
||
-v /opt/camtalk/.env:/host.env:ro \
|
||
-v /root/camtalk:/deploy \
|
||
alpine cp /host.env /deploy/.env 2>/dev/null || true
|
||
if [ ! -f /root/camtalk/.env ]; then
|
||
echo "=============================================="
|
||
echo " 错误: 无法从 /opt/camtalk/.env 同步环境变量"
|
||
echo " 请在服务器上执行: cp /opt/camtalk/.env /root/camtalk/.env"
|
||
echo "=============================================="
|
||
exit 1
|
||
fi
|
||
|
||
chmod +x /root/camtalk/deploy.sh
|
||
/root/camtalk/deploy.sh build
|
||
/root/camtalk/deploy.sh restart |