01.15 軟件推薦丨Syncd——簡單高效的自動化部署工具

軟件推薦丨Syncd——簡單高效的自動化部署工具

點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊


軟件推薦丨Syncd——簡單高效的自動化部署工具


Syncd - 自動化部署工具

syncd是一款開源的代碼部署工具,它具有簡單、高效、易用等特點,可以提高團隊的工作效率。

特性

  • 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

推薦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
郵箱: [email protected]
密碼: syncd.cc

!!!登錄後請儘快修改密碼

使用

系統使用流程圖

軟件推薦丨Syncd——簡單高效的自動化部署工具

使用截圖

軟件推薦丨Syncd——簡單高效的自動化部署工具

軟件推薦丨Syncd——簡單高效的自動化部署工具

軟件推薦丨Syncd——簡單高效的自動化部署工具

↓↓↓


分享到:


相關文章: