CodePub現(xiàn)代的持續(xù)集成發(fā)布系統(tǒng)
暴走皮皮蝦之代碼發(fā)布系統(tǒng),是現(xiàn)代的持續(xù)集成發(fā)布系統(tǒng),由后臺(tái)管理系統(tǒng)和agent兩部分組成,一個(gè)運(yùn)行著的agent就是一個(gè)節(jié)點(diǎn),本系統(tǒng)并不是造輪子,是"鳥槍"到"大炮"的創(chuàng)新,對(duì)"前朝遺老"的革命.
特點(diǎn)
基于golang編寫,站在巨人肩膀上,充分利用golang的協(xié)程,channel還有高并發(fā)的特點(diǎn),甩其它基于虛擬機(jī)或者解釋性語(yǔ)言編寫的發(fā)布系統(tǒng)幾條街.
極速部署,其實(shí)部署是不存在的,本系統(tǒng)只需要下載二進(jìn)制文件執(zhí)行即可,想用立刻就能用.
GIT倉(cāng)庫(kù)支持,可以遠(yuǎn)程拉取GIT代碼發(fā)布到集群節(jié)點(diǎn)上.
集群發(fā)布,一個(gè)GIT倉(cāng)庫(kù)可以配置發(fā)布到N個(gè)節(jié)點(diǎn)的集群.
命令支持,發(fā)布代碼的前后,都可以自己定義執(zhí)行一段系統(tǒng)命令,比如:重啟程序.
構(gòu)建發(fā)布,java,c,c++,golang等編寫的程序需要先編譯"發(fā)布包",然后分發(fā)"發(fā)布包"到節(jié)點(diǎn)集群.
封版管理,特有的封版本功能,同時(shí)具備封版白名單.公司在一些特殊時(shí)期,比如電商公司在某些促銷或其它節(jié)日活動(dòng)的時(shí)候,為了保證線上服務(wù),往往需要對(duì)整個(gè)發(fā)布代碼功能暫停,那么封版功能就十分好用了.
高性能,發(fā)布代碼的速度極快,對(duì)系統(tǒng)環(huán)境的要求很低.
跨平臺(tái),Linux,windows,mac,樹梅派,路由器等等...
人性化的權(quán)限控制,一般一個(gè)部門的老大是超級(jí)管理員角色,老大只需要管理誰(shuí)是管理員即可,管理員只需要管理用戶即可,用戶能發(fā)布代碼.每層的權(quán)限系統(tǒng)都做控制.
界面優(yōu)美,交互簡(jiǎn)單,更符合現(xiàn)在的大眾web審美.
公告功能,有時(shí)候有些重要事情需要告知使用發(fā)布系統(tǒng)的開發(fā)者,那么公告功能就很好的解決了這個(gè)問題.
集成外部登錄,本系統(tǒng)支持通過外部系統(tǒng)認(rèn)證用戶,比如與公司的LDAP登錄融合,只需要根據(jù)我們的開發(fā)文檔花費(fèi)幾十分鐘寫個(gè)HTTP API接口即可.
安裝
1. codepub 安裝
找到對(duì)應(yīng)平臺(tái)的版本下載編譯好的壓縮包
# 創(chuàng)建目錄 $ mkdir codepub $ cd codepub # 以 linux amd64 為例,下載版本 0.8 壓縮包 $ wget https://github.com/bzppx/bzppx-codepub/releases/download/v0.8/bzppx-codepub-linux-amd64.tar.gz # 解壓到當(dāng)前目錄 $ tar -zxvf bzppx-codepub-linux-amd64.tar.gz # 執(zhí)行安裝程序,默認(rèn)端口為 8090,指定其他端口加參數(shù) --port=8087 $ ./install/install # 瀏覽器訪問 http://ip:8090 進(jìn)入安裝界面,完成安裝配置 # Ctrl + C 停止 install 程序, 啟動(dòng) codepub 管理后臺(tái) $ ./codepub --conf conf/codepub.conf
2. codepub-agent 安裝
3. nginx 配置反向代理
upstream frontends {
server 127.0.0.1:8088; # codepub 監(jiān)聽的ip:port
}
server {
listen 80;
server_name codepub.com www.codepub.com;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
# 靜態(tài)資源交由nginx管理
location /static {
root /www/bzppx-codepub; # codepub 的根目錄
expires 1d;
add_header Cache-Control public;
access_log off;
}
}
同類軟件對(duì)比
| - | 語(yǔ)言 | 部署 | 穩(wěn)定性 | 系統(tǒng)要求 | 平臺(tái)覆蓋 | 發(fā)布速度 | 發(fā)布配置 | 郵件通知 | 封版 | 權(quán)限 | 公告 | 界面 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jenkins |
java | 復(fù)雜 | 中 | 高 | 一般 | 很慢 | 靈活 | ? | ? | ? | ? | 丑陋 |
CodePub |
golang | 1分鐘 | 高 | 低 | 廣泛 | 極快 | 十分靈活 | ? | ? | ?(更細(xì)) | ? | 優(yōu)美 |
系統(tǒng)介紹
1.用戶功能
| - | 用戶管理 | 設(shè)置管理員 | 發(fā)布代碼 | 回滾代碼 | 封版 | 公告管理 | 項(xiàng)目管理 | 節(jié)點(diǎn)管理 |
|---|---|---|---|---|---|---|---|---|
超級(jí)管理員 |
? | ? | ? | ? | ? | ? | ? | ? |
管理員 |
? | ? | ? | ? | ? | ? | ? | ? |
普通用戶 |
? | ? | ? | ? | ? | ? | ? | ? |
2.系統(tǒng)界面,先睹為快
2.1 安裝
2.2 登錄
2.2 面板
2.3 添加節(jié)點(diǎn)
2.4 添加項(xiàng)目
2.5 發(fā)布代碼
2.6 節(jié)點(diǎn)進(jìn)度
開發(fā)
環(huán)境要求:go 1.8
$ git clone https://github.com/bzppx/bzppx-codepub.git $ cd bzppx-codepub $ go get ./... $ go build ./
