1. 簡介
在軟件開發(fā)過程中經常會提到CI/CD的概念,CI(Continuous Integration)持續(xù)集成盅弛,開發(fā)人員每天通過git等向倉庫提交代碼更新,代碼提交后實現(xiàn)自動化構建叔锐,測試挪鹏,部署,方便開發(fā)人員盡早發(fā)現(xiàn)和解決問題愉烙。
jenkins是一款開源持續(xù)集成軟件工具讨盒,常用于代碼自動構建,測試齿梁,部署催植。
2. 安裝
在docker中部署jenkins,安裝docker勺择,平臺為ubuntu20.04 server版创南。
- 安裝docker
sudo apt install docker.io // 安裝docker
sudo usermod -a $(whoami) -G docker // 把當前用戶添加到docker用戶組,否則非root用戶沒有權限使用docker命令
- pull jenkins鏡像
docker search jenkins // 查找jenkins鏡像
docker pull jenkins/jenkins // pull jenkins最新鏡像省核,注意jenkins鏡像已經過時了稿辙,不要pull錯了
- 啟動jenkins容器
sudo mkdir /var/jenkins_home/
sudo chmod 777 /var/jenkins_home/
docker run -u root -it --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -d jenkins/jenkins
-v把宿主機的/var/jenkins_home目錄掛載到容器的/var/jenkins_home,該目錄是jenkins的工作目錄气忠,主要方便在本地查看容器的文件邻储。
- 查看容器
docker ps -a // 查看jenkins容器
docker inspect jenkins // 查看jenkins容器的完整信息,可通過容器ID或容器名字查看,這里通過名字
3. 訪問jenkins
在瀏覽器中輸入:http://serverip:8080/訪問jenkins旧噪,serverip為docker宿主機的ip吨娜,我這里是在騰訊云服務器上搭建的環(huán)境,所以serverip即為云服務器ip淘钟,頁面如下:
jenkins默認創(chuàng)建admin用戶宦赠,初始密碼通過jenkins容器log中查看,或者直接查看問題:/var/jenkins_home/secrets/initialAdminPassword
docker logs jenkins
接下來一步步進去安裝推薦的插件米母,創(chuàng)建第一個管理員用戶勾扭,進入主頁面:
在插件管理中安裝Manage Jenkins-> Manage Plugin中安裝:Locale,Localization: Chinese (Simplified)
配置為中文:Manage Jenkins-> Configure System中Locale配置成: zh_CN,通過如下方式重啟jenkins:
http://serverip:8080/restart
4. 新建任務
上面有6個菜單選項铁瞒,接下來分別配置源碼路徑(github妙色,gitlab,svn等)慧耍,觸發(fā)條件(定時觸發(fā)身辨,代碼提交觸發(fā)丐谋,循環(huán)觸發(fā)等),
注意以下幾點:
- 默認用戶名為容器啟動的用戶名栅表,我這里用root啟動笋鄙,所以默認為root
- github主分支不從master換成main分支
- 項目URL從https協(xié)議換成git協(xié)議路徑,最后如果jenkins能訪問項目路徑的話就不會有紅色報錯了
設置github hook觸發(fā)構建怪瓶,構建方式為執(zhí)行shell命令: go build .
5. 配置github觸發(fā)構建
-
jenkins需要訪問github上的倉庫萧落,首先github上生成token給jenkins
登錄github賬戶,在Settings-> Developer settings ->Personal access tokens->Generate new token
image.png
把生成的token保存起來洗贰,后續(xù)需要把token設置到jenkins中找岖。
- jenkins配置github server
在Manage Jenkins-> Configure System中配置github server
image.png
image.png
把生成的token貼到Secret輸入框中,jenkins默認的github hook URL為:http://serverip:8080/github-webhook/敛滋,serverip是jenkins宿主機ip许布,這里我們不改動它,github上有commit提供時就通過對該URL發(fā)post請求通知jenkins觸發(fā)構建绎晃。 - github配置hook
image.png
在倉庫Settins->webhook中設置jenkins的webhook URL蜜唾,這里填寫:http://serverip:8080/github-webhook/
Secret輸入賬戶密碼,到這里一切都設置完成了庶艾。github倉庫上有代碼提交->通過webhook通知jenkins->jenkins攜帶token訪問github倉庫->pull代碼->構建
6. 測試
上傳代碼袁余,查看是否能觸發(fā)自動構建:
可以看到立馬觸發(fā)了一次構建,有幾個小問題需要注意:
- 容器中需要有go環(huán)境咱揍,可以把go解壓到/var/jenkins_home目錄下去颖榜,并jenkins中設置go路徑加到環(huán)境變量
- 或者以root用戶啟動容器,進入容器的交互終端通過apt安裝go環(huán)境煤裙,建議第一種掩完,最好不要用root用戶啟動容器
- 構建命令可以做成一個腳本,做到同時構建和部署硼砰,這里只是簡單go build下項目