Syncd - 开源自动化部署工具
官网:https://gitee.com/dreamans/syncd/issues
syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.
目前只支持类Linux系统.
特性
- 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以上版本, 用来编译源代码
- Git
请保持部署Syncd服务器的git版本为最新(>=2.20)
- 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
安装
- 二进制包安装
二进制包下载地址:https://github.com/dreamans/syncd/releases
源码编译安装
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:https://gitee.com/dreamans/syncd/issues
LICENSE
本项目采用 MIT 开源授权许可证,完整的授权说明已放置在 LICENSE 文件中
- pwnhub年前最后一战——“血月归来”writeup
- MHN中心服务器搭建与树莓派蜜罐部署
- 如何在CDH中启用Spark Thrift
- 让你的以太坊 DApps 盈利的 6 种方法
- 赛博地球杯初赛第三名,ChaMd5安全团队的writeup
- 如何在Windows Server2012搭建DNS服务并配置泛域名解析
- 如何使用HBase快照实现跨集群全量与增量数据迁移
- 为什么你应该学习搭建区块链应用
- 如何在Hue中创建Ssh的Oozie工作流
- 如何在启用Sentry的CDH集群中使用UDF
- 区块链太火,小心你的服务器被动挖矿
- PY交易之简单沙盒绕过
- CentOS6.5安装CDH5.13
- N1CTF2018 APFS&Lipstick题解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Saltstack_使用指南03_配置管理
- Saltstack_使用指南04_数据系统-Grains 4.1. grains条目项信息4.2. grains全部信息4.3. 查询grains指定信息5.1. m
- 揭开spring初始化方法的神秘面纱
- Saltstack_使用指南05_数据系统-Pillar 4.1. 修改配置文件并重启服务4.2. 显示pillar信息6.1. pillar的sls文件编写6.2.
- Python Docker 查看私有仓库镜像【转】
- CentOS7 Docker私有仓库搭建及删除镜像 【转】
- spring的自定义标签都不会?你可能只学到了spring的皮毛
- 面试官:spring的BeanFatory和FactoryBean区别
- Saltstack_使用指南06_远程执行-指定目标
- 什么是缓存击穿、雪崩、穿透
- 如何卸载CDH7.1.1
- java8 stream的这些开发技巧,你值得好好收藏
- 面试官:mybatis中#{ }和${ }的区别
- python 学习笔记(9)——Python 正则表达式
- 万能的BeanPostProcessor是如何让spring无限扩展的?