最近一直跟幾個(gè)小伙伴在討論敏捷項(xiàng)目及其在具體團(tuán)隊(duì)中演進(jìn)的許多問題。我想敏捷是一個(gè)從技術(shù)到項(xiàng)目管理等多個(gè)層次的立體問題浊仆。理念上的東西需要反復(fù)地思想碰撞和實(shí)踐客峭,進(jìn)而去總結(jié)。而技術(shù)層面則卻可以陸續(xù)擴(kuò)展抡柿,對(duì)于二三線城市舔琅,特別是一些小團(tuán)隊(duì),技術(shù)能力和使用工具都有脫離當(dāng)下發(fā)展的情況洲劣,其原因并非是團(tuán)隊(duì)人員惰怠搏明,而是沒有良好的入門引導(dǎo)鼠锈。所以我在自己的博客中開設(shè)“實(shí)用小帖”一欄,目的是輔助大家尋找并入門一些好的技術(shù)工具星著。當(dāng)然购笆,任何技術(shù)都可能會(huì)過時(shí),這也是我的博客中很少講解技術(shù)代碼的原因虚循。不過“實(shí)用小帖”旨在拋磚引玉同欠,希望通過更為廣泛的交流來讓敏捷落地在中小開發(fā)團(tuán)隊(duì)中。畢竟横缔,在小一點(diǎn)的團(tuán)隊(duì)铺遂,往往技術(shù)負(fù)責(zé)人是既當(dāng)“爹”(PM)又當(dāng)“媽”(Coder),卻為不易茎刚。
0. 準(zhǔn)備工作
Gitlab在部署的時(shí)候會(huì)占用三個(gè)端口80,443和22襟锐,分別是web訪問和ssh協(xié)議。所以在部署的時(shí)候就要把服務(wù)器上的這三個(gè)端口讓出來膛锭,當(dāng)然也可以通過修改配置文件將三個(gè)端口修改為其他端口粮坞。不過不建議修改22端口,因?yàn)橐坏┬薷脑摱丝诔跽许?xiàng)目開發(fā)人員就需要本地配置git莫杈,雖然簡(jiǎn)單,但由于開發(fā)人員可能對(duì)git使用能力參差不齊而產(chǎn)生不必要的麻煩奢入,所以并不建議修改22端口筝闹。
但是Linux系統(tǒng)往往自帶ssh server, 所以需要修改它的默認(rèn)端口,既
vim /etc/ssh/sshd_config
修改端口號(hào)
如此腥光,以后再使用ssh連接服務(wù)器的時(shí)候关顷,就需要使用命令:
ssh -p <port_number> <username>@<server_ip>
下一步,安裝docker武福。對(duì)于小團(tuán)隊(duì)的各種管理事務(wù)解寝,代碼管理,倉(cāng)庫(kù)管理艘儒,持續(xù)集成聋伦,數(shù)據(jù)庫(kù)管理,數(shù)據(jù)遷移備份以及部署實(shí)施docker絕對(duì)是一站式解決方案界睁。
1. docker安裝Gitlab
其實(shí)很多開發(fā)常用的代碼管理工具只有svn和git觉增,但實(shí)際上還有很多其他產(chǎn)品,不過目前功能和文檔最為完善估計(jì)只有g(shù)itlab了翻斟。使用docker安裝Gitlab十分方便逾礁,首先下載鏡像
docker pull gitlab/gitlab-ce:latest
gitlab-ce是社區(qū)免費(fèi)版本,gitlab-ee是企業(yè)收費(fèi)版本,在功能上也有所區(qū)別嘹履。
接下來創(chuàng)建并運(yùn)行一個(gè)Gitlab容器(注意配置docker的用戶組, 避免使用sudo命令)
sudo docker run --detach \
--hostname <server_ip_or_address> \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://<server_ip_or_address>/' " \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
參數(shù)說明:
--detach 保持容器后臺(tái)持續(xù)運(yùn)行
--hostname 設(shè)置gitlab的hostname
--env 當(dāng)中的external_url保證倉(cāng)庫(kù)克隆連接的hostname顯示正確
--publish 主機(jī)與容器的端口映射
--name 設(shè)置容器名稱
--restart always 設(shè)置容器與docker service同步啟動(dòng)
--volume 將主機(jī)磁盤掛載到容器腻扇,這個(gè)很重要,因?yàn)榧词挂院笠瞥撊萜骼担覀兺瑯涌梢詫⑦@些數(shù)據(jù)掛載到其他容器上
2. Gitlab同步原代碼倉(cāng)庫(kù)
完成上述過程幼苛,配置gitlab的root賬號(hào)以及注冊(cè)開發(fā)人員賬號(hào)之后,即可以同步代碼倉(cāng)庫(kù)焕刮,這里很簡(jiǎn)單舶沿。
最后點(diǎn)Create就可以了
*3. 設(shè)置鏡像倉(cāng)庫(kù)
有時(shí)候,這種備份是臨時(shí)解決問題配并,所以需要更為穩(wěn)固的倉(cāng)庫(kù)進(jìn)行鏡像同步括荡,設(shè)置鏡像的辦法也很簡(jiǎn)單
這里注意,Gitlab的CE版只能做Push鏡像溉旋,而EE則支持Push和Pull鏡像兩種畸冲,所以依據(jù)仔細(xì)需求選擇,當(dāng)然也有其他工具能夠解決CE的Pull鏡像問題观腊,不過相對(duì)比較累贅邑闲。實(shí)際上多采用ruby腳本寫的runner來達(dá)到效果。
在輸入鏡像倉(cāng)庫(kù)地址時(shí)恕沫,可以把鏡像倉(cāng)庫(kù)的用戶名寫入url监憎,格式為
http://<username>@<mirror_repo_address>/
這里纱意,如果只同步保護(hù)分支的話婶溯,那么是每分鐘同步一次。
而如果同步所有分支的話偷霉,那么就是每五分鐘同步一次迄委。
*4. 關(guān)于Docker使用的擴(kuò)展
在團(tuán)隊(duì)業(yè)務(wù)線累積的過程中,往往會(huì)誕生一些工具类少,基于maven或graddle等現(xiàn)在的項(xiàng)目管理工具叙身,這些工具也可能作為常用框架在公司內(nèi)部累積起來,此時(shí)這些項(xiàng)目的維護(hù)共享等事務(wù)就成了比較重要的事兒硫狞,如果每次需要開發(fā)人員自行打包編譯信轿,比較麻煩,而且往往因?yàn)榧夹g(shù)能力和環(huán)境問題出現(xiàn)各種問題残吩。所以我個(gè)人喜歡利用Docker在公司內(nèi)部放置Maven财忽,NPM,Python泣侮,.net core等一些私有倉(cāng)庫(kù)即彪,這樣當(dāng)這些框架累積起來時(shí),我只需要在項(xiàng)目的配置文件中指定活尊,那么所有開發(fā)人員的內(nèi)部框架使用就會(huì)立即同步隶校,十分方便漏益。