Jenkins大家一定很熟悉凿跳。以前我也配過良拼,這次的需求是當(dāng)后臺開發(fā)工程師向git server提交代碼以后,jenkins服務(wù)器自動去抓取就斤,然后編譯悍募,發(fā)布,我起初覺得這是個很簡單的事情洋机,應(yīng)該半個小時搞定吧坠宴。
事實上,不但半個小時沒搞定绷旗,我最后 折騰了三天喜鼓,經(jīng)歷了38次失敗,最終在第39次才完全配置成功衔肢。
把經(jīng)歷的過程寫下來庄岖,供后來者參考,避免踩坑角骤。
一隅忿、本次配置環(huán)境:
1.需求:
后端工程師提交代碼->Push到Git Server(使用Gitea自已搭建)->經(jīng)路由器映射觸發(fā)內(nèi)網(wǎng)Jenkins服務(wù)鉤子->Jenkins 通過Git獲得代碼->編譯代碼 ->Copy 到Pub目錄 ->通過 supervisorctl 重啟發(fā)布新程序。
2.使用到的工具版本:
Gitea :自建Git代碼服務(wù)器 部署在www.A.com服務(wù)器上
Jenkins 2.2.4.5 :CI 持續(xù)集成 部署在內(nèi)網(wǎng)邦尊,通過路由器映射端口到內(nèi)網(wǎng)背桐,使Gitea獲得鉤子,觸發(fā)事件
JenKins操作系統(tǒng):CentOS 7
Dotnet Core 3.1
3.環(huán)境說明
二胳赌、配置過程
1.安裝jenkins牢撼。這個網(wǎng)上教程太多了,就說了
2.在安裝插件前疑苫,一定要把升級服務(wù)器中心配置為清華大學(xué)的鏡像,不然大多數(shù)插件是裝不好的纷责,我就是在插件安裝這里花了很多時間捍掺。
菜單 :
[Manage Jenkins]->插件管理->高級->升級站點:
設(shè)置為:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
如果插件裝不起,怎么辦再膳?我就是反復(fù)試挺勿,經(jīng)常出現(xiàn)Time out的情況 。
反復(fù)試喂柒,終于裝起了不瓶。
幾個必須的插件:
[Generic Webhook Trigger]
這個插件不裝,沒法觸發(fā)git push鉤子灾杰。
[Git Parameter Plug-In]
如果你拉下來的代碼分支是master,這個可 以不用管蚊丐。而我們的是開發(fā)環(huán)境,git提供合并的代碼 分支在dev上艳吠,所以一定要裝這個插件麦备,實現(xiàn)代碼分支切換。話說這個插件我反復(fù)嘗試了不下20次才裝好, 不停的報網(wǎng)絡(luò)超時啊....
3.插件裝好了就是配置了
建項目凛篙,網(wǎng)上多教程黍匾。
我建的項目是:
This project is parameterized
圖示:
4.Gitea server 配置為:
其中的TOKEN值,就是代在jenkins中可以設(shè)定的Token
5.最后構(gòu)建腳本為:
因為有多個nuget包服務(wù)器呛梆,我查了官方文檔锐涯,要通過-s指定多個Nuget包管理器
dotnet restore -s LocalPackagPath -s https://api.nuget.org/v3/index.json
開始編譯
dotnet build
進入編譯后的目錄
cd /var/lib/jenkins/workspace/ProjectName/src/ProjectWeb/bin/Debug/netcoreapp3.1
最開始用cp拷貝文件覆蓋,一直報錯填物,后來改用這個覆蓋全庸,完全沒問題了
rsync -av --exclude='pub' --exclude='runtimes' * pub
使用supervisorctl重啟服務(wù),supervisorctl的教程網(wǎng)上到處都是融痛,這里就 不提了壶笼。
supervisorctl restart all
配完了一看,其實挺簡單的雁刷,不過這中間發(fā)生了太多的異常覆劈,包括網(wǎng)絡(luò)超時、程序包管理無法正常獲取影響了編譯沛励、cp拷貝文件報錯等各個錯誤责语。好在一個一個都填我填平了。
最好配好了目派,還是挺有成就感 的坤候。