自动化部署工具 Syncd

自动化部署工具 Syncd

MIT
Google Go JavaScript
Linux
2019-01-14
clouddyy

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

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

    的码云指数为
    超过 的项目
    加载中

    评论(9)

    nimagugu
    nimagugu
    还是用 jenkins吧
    江湖哥
    江湖哥
    整一个docker镜像就好了
    一位极其不愿意透漏姓名的马先生
    前几天还在说瓦力那个py部署很麻烦,就出了go版
    一位极其不愿意透漏姓名的马先生
    直接二进制部署很爽
    TGVvbmFyZA
    TGVvbmFyZA
    可以部署到Docker上嗎?
    piaoxuedtian
    piaoxuedtian
    scp的话不就是全量上线?这还不如rsync的增量上线方便安全吧
    冰力
    冰力
    看到名字是 D 结尾还以为是 D语言开发的
    稳价保
    为什么选择scp而不用rsync呢?
    卧龙大熊猫
    卧龙大熊猫
    用来发布PHP代码很方便

    Syncd v1.1.0 发布,提供二进制安装包

    syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率。 项目地址(Github) 项目地址(Gitee) 下载地址 v1.1.0 使用文档 特性: Go语言开发,编译简单、运行...

    01/16 08:46

    Syncd v1.0.1 发布,一款 Go 语言开发的自动化部署工具

    syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率。 项目地址(Github) 项目地址(Gitee) 下载地址 v1.0.1 使用文档 特性: Go语言开发,编译简单、运行...

    01/14 12:41

    没有更多内容

    加载失败,请刷新页面

    没有更多内容

    暂无问答

    syncd的使用和部署

    简介 syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. 安装 首先创建一台服务器 我使用的是centos之后使用我的centos初始化脚本初始化一下 curl -O ...

    01/30 21:35
    12
    0
    在AIX上增加文件系统空间

    显示活动的卷组 dhdev01 / # lsvg -o bkvg vg01 vg02 rootvg 列出对应的物理卷 dhdev01 / # lsvg -p rootvg rootvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk0 active...

    2012/10/19 16:22
    1K
    0
    在AIX上空闲卷上重建文件系统

    在卷组vg01上重建具有5个物理分区的逻辑卷,卷名为mytest,类型jfs2(一个物理分区大小为128或512M,具体用命令lsvg vg01查看PP Size) mklv -y mytest -t jfs2 vg01 5 在逻辑卷mytest上重建...

    2012/05/11 16:37
    59
    0
    日常运维_8

    10.32 /10.33 rsync通过服务同步(上下) rsync通过服务的方式同步 要编辑配置文件 /etc/rsyncd.conf rsyncd.conf样例 port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid ...

    2018/11/02 02:07
    3
    0
    本地lsyncd自动实时同步

    话说是这样的... 通常的linux系统同步都是采用rsync + cron来完成,这样的办法问题就是 时间太固定,如果是太多的服务器,会对源服务器造成很大的压力 采用cron来定同步的时间,如果有一次需...

    2015/05/03 18:36
    255
    0
    笔记二:keepalived配置安装

    1. 安装依赖 su - root yum -y install kernel-devel* yum -y install openssl-* yum -y install popt-devel yum -y install lrzsz yum -y install openssh-clients 2. 安装keepalived 2.1....

    2018/12/13 11:13
    5
    1
    Keepalived+lvs+httpd之负载均衡

    最近在研究 负载均衡。目前研究的是keepalived+lvs模式 1、软件介绍 keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived主要用作realserve...

    2015/08/20 10:03
    4.5K
    0
    pstree 进程关系树

    acer@ubuntu :~/workspace/ck/Debug$ pstree init─┬─NetworkManager─┬─dhclient │ └─{NetworkManager} ├─acpid ├─atd ├─avahi-daemon───avahi-daemon ├─bonobo-activati...

    2012/12/09 16:02
    68
    0

    没有更多内容

    加载失败,请刷新页面

    返回顶部
    顶部