syncd部署以及遇到的问题
主要逻辑
1. 编译打包
- git clone 代码到服务器
- git checkout/git reset 迁出分支/tag
- 执行构建脚本对项目打包(tar.gz)
- 执行hook脚本
2. 部署
- 通过ssh远程创建部署目录
- 通过scp拷贝打包文件到远程机器
- 通过ssh执行远程命令(部署前命令)
- 通过ssh远程解压部署
- 通过ssh执行远程命令(部署后命令)
- 邮件通知
- 执行hook脚本
脚本变量
-
${env_workspace}
代码仓库本地副本目录
-
${env_pack_file}
打包文件绝对地址,构建完成后将需要部署到线上的代码打包到此文件中,必须使用
tar -zcf
命令进行打包。
部署模块会将此压缩包分发到目标主机并解压缩到指定目录,请按照要求打包,否则会部署失败。
部署服务器的$HOME必须与运行Syncd的用户一致,否则ssh的免密登录将无效。
配置ssh
sudo apt-get install openssh-server
在A服务器里免密登录B服务器:
-
将A服务器id_rsa.pub的内容写入B服务器~/.ssh/authorized_keys文件里
-
在B服务器上sudo chmod 600 ~/.ssh/authorized_keys
重定向
问题 https://github.com/dreamans/syncd/issues/87
部署后执行启动命令
./hd-monitor
发现根部停不下来,部署卡在执行post-deploy命令处。
修改为一下命令问题解决。
nohup ./hd-monitor > /dev/null &
/dev/null 表示舍弃重定向后的文件