官網: https://gitee.com/dreamans/sy...
syncd是一款開源的代碼部署工具,它具備簡單、高效、易用等特色,能夠提升團隊的工做效率. php
目前只支持類Linux系統.html
特性java
原理nginx
Gitgit
Syncd服務經過git-ssh(或password)方式從倉庫中拉取指定tag(分支)代碼.github
構建面試
運行配置好的構建腳本, 編譯成可上線的軟件包redis
在這一環節中,可運行單元測試 (例如 go test
`php phpunit, 下載依賴 (如
go: glide installphp: composer install`), 編譯軟件包 (如 `js: npm build
go: go build xx.gojava: javac xx.java
c: cc xx.c`) 等.sql
分發數據庫
經過 scp
命令分發軟件包到各機房生產服務器的臨時目錄, 遠程執行 pre-deploy 配置的命令, 執行完畢後解壓縮軟件包到目標目錄,而後執行 post-deploy
命令
分發上線過程是串行執行,而且任意步驟執行失敗整個上線單會終止上線並將狀態置爲上線失敗,須要點擊 再次上線 重試.
未來會支持同一集羣服務器並行執行, 集羣之間串行發佈的特性
SSH信任
生產服務器與部署服務器之間經過ssh-key創建信任
配置方法請參考 祕鑰配置
章節
安裝
準備工做
推薦Go1.10以上版本, 用來編譯源代碼
請保持部署Syncd服務器的git版本爲最新(>=2.20)
Web服務依賴Nginx
系統依賴Mysql存儲持久化數據, 推薦版本 Mysql 5.7
系統會使用到 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/s...
源碼編譯安裝
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: s yncdVersion: 1.0.0 Config Loaded: ./etc/syncd.ini Log: stdout Database: 127.0.0.1 Mail Enable: 0 HTTP Service: :8868 Start Running...
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進行臨時解析
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/sy...
LICENSE
本項目採用 MIT 開源受權許可證,完整的受權說明已放置在 LICENSE 文件中
歡迎你們關注個人微信公衆號【民工哥技術之路】,最新整理的 2TB 技術乾貨:包括架構師實戰教程、大數據、Docker容器、系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、ELK Stack、機器學習、BAT面試精講視頻等。只需在「 民工哥技術之路」微信公衆號對話框回覆關鍵字:1024便可獲取所有資料。