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 文件中
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/4QfjB-eles4sLwdLON864g