官網地址: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:??????????????syncdVersion:??????????????1.0.0Config?Loaded:????????./etc/syncd.iniLog:??????????????????stdoutDatabase:?????????????127.0.0.1Mail?Enable:??????????0HTTP?Service:?????????:8868Start?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/hosts127.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 文件中