Syncd——开源自动化部署工具

栏目: 数据库 · 发布时间: 5年前

内容简介:官网地址:https://gitee.com/dreamans/syncd/issuessyncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.

Syncd——开源自动化部署工具

官网地址:https://gitee.com/dreamans/syncd/issues

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

目前只支持类 Linux 系统.

特性

  • Go语言开发,编译简单、运行高效

  • Web界面访问,交互友好

  • 灵活的角色权限配置

  • 支持Git仓库

  • 分支、tag上线

  • 部署hook支持

  • 完善的上线工作流

  • 邮件通知机制

原理

Syncd——开源自动化部署工具

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

推荐 Go 1.10以上版本, 用来编译源代码

  • Git

请保持部署Syncd服务器的git版本为最新(>=2.20)

  • Nginx

Web服务依赖Nginx

  • MySQL

系统依赖 Mysql 存储持久化数据, 推荐版本 Mysql 5.7

  • Linux + Bash

系统会使用到 gitsshscp 等命令,所以目前只推荐在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

!!!登录后请尽快修改密码

使用

系统使用流程图

Syncd——开源自动化部署工具

使用截图

Syncd——开源自动化部署工具 Syncd——开源自动化部署工具 Syncd——开源自动化部署工具 Syncd——开源自动化部署工具 Syncd——开源自动化部署工具 Syncd——开源自动化部署工具 Syncd——开源自动化部署工具

帮助

遇到问题请提 issue:https://gitee.com/dreamans/syncd/issues

LICENSE

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Two Scoops of Django

Two Scoops of Django

Daniel Greenfeld、Audrey M. Roy / CreateSpace Independent Publishing Platform / 2013-4-16 / USD 29.95

Two Scoops of Django: Best Practices For Django 1.5 is chock-full of material that will help you with your Django projects. We'll introduce you to various tips, tricks, patterns, code snippets, and......一起来看看 《Two Scoops of Django》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试