- 授权协议: MIT
- 开发语言: Google Go JavaScript
- 操作系统: Linux
- 软件首页: https://gitee.com/dreamans/syncd
- 软件文档: https://gitee.com/dreamans/syncd
软件介绍
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
系统会使用到 git
, ssh
, scp
等命令,所以目前只推荐在Linux上使用, 并且需要提前安装或更新这些命令道最新版本。
请升级git到最新版本
秘钥配置
由于部署服务器(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
劫持
玛丽•K. 斯温格尔(Mari K. Swingle) / 邓思渊 / 中信出版集团股份有限公司 / 2018-5-1 / CNY 59.00
《劫持》是一本探讨人与科技的关系的书,基于一位心理学博士20年的临床经验及其作为神经认知科学研究者的脑—电研究成果。在这本面向大众的科普书中,作者以深入浅出的方式,探讨了手机、电脑等便携式数字设备及让人“永不下线”的互联网对现代人尤其是青少年大脑的影响,从神经认知科学和精神分析的角度,有力地证明了数字媒介与大脑和人类行为的关系,探讨了手机等如何对人的大脑进行劫持或操控,并给出了自己作为从业医师的实......一起来看看 《劫持》 这本书的介绍吧!