乐趣区

Syncd – 自动化部署工具

syncd 是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.

目录

特性
原理
安装
使用
帮助
授权

特性

Go 语言开发,编译简单、运行高效
Web 界面访问,交互友好
灵活的角色权限配置
支持 Git 仓库
分支、tag 上线
部署 hook 支持
完善的上线工作流
邮件通知机制

原理

Git
Syncd 服务通过 git-ssh(或 password)方式从仓库中拉取指定 tag(分支)代码
构建
运行配置好的构建脚本, 编译成可上线的软件包
在这一环节中,可运行单元测试 (例如 go test php phpunit, 下载依赖 (如 go: glide install php: composer install), 编译软件包 (如 js: npm build go: go build xx.go java: javac xx.java c: cc xx.c) 等.
分发
通过 scp 命令分发软件包到各机房生产服务器的临时目录, 远程执行 pre-deploy 配置的命令, 执行完毕后解压缩软件包到目标目录,然后执行 post-deploy 命令
分发上线过程是串行执行,并且任意步骤执行失败整个上线单会终止上线并将状态置为上线失败,需要点击 再次上线 重试.
将来会支持同一集群服务器并行执行, 集群之间串行发布的特性
SSH 信任
生产服务器与部署服务器之间通过 ssh-key 建立信任
配置方法请参考 秘钥配置 章节
安装
准备工作
Go
推荐 Go1.10 以上版本, 用来编译源代码
Nginx
Web 服务依赖 Nginx
MySQL
系统依赖 Mysql 存储持久化数据, 推荐版本 Mysql 5.7
Linux + Bash
系统会使用到 git, ssh, scp 等命令,所以目前只推荐在 Linux 上使用, 并且需要提前安装或更新这些命令道最新版本
秘钥配置
由于部署服务器 (Syncd 服务所在的服务器) 与生产服务器 (代码部署目标机) 之间通过 ssh 协议通信,所以需要将部署机的公钥 (一般在这里: ~/.ssh/id_rsa.pub)加入到生产机的信任列表中(一般在这里 ~/.ssh/authorized_keys)
可使用 ssh-copy-id 命令添加,或手动拷贝. 拷贝后不要忘记进行测试连通性 ssh {生产机用户名}@{生产机地址}
最后建议将以下配置加入到部署服务器 ssh 配置 /etc/ssh/ssh_config 中,关闭公钥摘要的显示提示,防止后台脚本运行失败
Host *
StrictHostKeyChecking no
请注意: ssh 目录权限需按此设置,否则会出现无法免密登录的情况
~/.ssh 0700
~/.ssh/authorized_keys 0600
安装
运行以下命令
curl https://raw.githubusercontent.com/dreamans/syncd/master/install.sh |bash
当前路径中若生成 syncd-deploy 或者 syncd-deploy-xxx 目录则表明安装成功
生成的 syncd-deploy 目录可拷贝或移动到你想要的地方,但不要试图将此目录拷贝到其他服务器上运行,会造成不可预料的结果.
数据库依赖
你需要将 github.com/dreamans/syncd/syncd.sql 数据表结构和数据导入到 MySQL 数据库中
修改配置文件
修改 syncd-deploy/etc/syncd.ini 中相关配置信息, 具体配置描述可参考注释
启动服务
cd syncd-deploy

➜ syncd-deploy ./bin/syncd -c ./etc/syncd.ini
__
_____ __ __ ____ _____ ____/ /
/ ___/ / / / / / __ \ / ___/ / __ /
(__) / /_/ / / / / / / /__ / /_/ /
/____/ \__, / /_/ /_/ \___/ \__,_/
/____/

Service: syncd
Version: 1.0.0
Config Loaded: ./etc/syncd.ini
Log: stdout
Database: 127.0.0.1
Mail Enable: 0
HTTP Service: :8868
Start Running…

添加 Nginx 配置
upstream syncdServer {
server 127.0.0.1:8868 weight=1;
}
server {
listen 80;
server_name deploy.syncd.cc; # 此处替换成你的真实域名
access_log logs/deploy.syncd.cc.log;

location / {
try_files $uri $uri/ /index.html;
root /path/syncd-deploy/public; # 此处 /path 请替换成真实路径
index index.html index.htm;
}

location ^~ /api/ {
proxy_pass http://syncdServer;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Origin $host:$server_port;
proxy_set_header Referer $host:$server_port;
}
}
重启 nginx 服务
修改 hosts
若域名未解析,可修改 hosts 进行临时解析
sudo vim /etc/hosts

127.0.0.1 deploy.syncd.cc;
安装完成
打开浏览器,访问 http://deploy.syncd.cc
初始账号:
用户名: syncd
邮箱: syncd@syncd.cc
密码: syncd.cc
!!! 登录后请尽快修改密码
使用
系统使用流程图

使用截图

帮助
遇到问题请提 issue
或者加微信进讨论群

授权
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 LICENSE 文件中

退出移动版