Linux下Jenkins与GitHub自动构建NetCore与部署
今天我們來談談NetCore在Linux底下的持續(xù)集成與部署。NetCore我就不多介紹了,持續(xù)集成用的是Jenkins,源代碼管理器用的是GitHub。我們就跟著博文往下走吧。
1.Linux環(huán)境
在進行自動構建之前,我們需要一個可以運行的Linux環(huán)境,并保證環(huán)境安裝了NetCoreSDK,Git,Jenkins等環(huán)境,那在這邊就不多說環(huán)境的安裝,提供相對應的安裝教程,大家按照安裝就可以,不過對Jenkins的安裝,我會多啰嗦一句。
啰嗦的那一句:
我在安裝Jenkins成功的時候進入網(wǎng)頁,網(wǎng)頁會一直保持在下面圖這個狀態(tài),沒辦法進入到開始頁面,那解決辦法是:
Jenkins等待
進入到Jenkins的工作目錄/var/lib/jenkins/修改hudson.model.UpdateCenter.xml文件
將http://updates.jenkins-ci.org/update-center.json修改為http://mirror.xmission.com/jenkins/updates/update-center.json
重啟下Jenkins
2.Jenkins自動構建
定時構建
chown jenkins /ftpfile -R??
chmod 777 /ftpfile -R?
dotnet restore?
dotnet build?
dotnet publish?
創(chuàng)建Jenkins項目
配置好自定義工作目錄
填寫源代碼路徑
配置定時任務
| 含義 | 分鐘 | 小時 | 日期 | 月份 | 星期 |
| 取值范圍 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 |
| 示例 | |||||
| 每隔15分鐘執(zhí)行一次 | H/15 | * | * | * | * |
| 每隔2個小時執(zhí)行一次 | H | H/2 | * | * | * |
| 每隔3天執(zhí)行一次 | H | H | H/3 | * | * |
| 每隔3天執(zhí)行一次(每月的1-15號) | H | H | 1-15/3 | * | * |
| 每周1,3,5執(zhí)行一次 | H | H | * | * | 1,3,5 |
| 規(guī)則 | |||||
| 指定時間范圍 | a-b | ||||
| 指定時間間隔 | / | ||||
| 指定變量取值 | a,b,c |
配置構建命令
查看構建,并運行NetCore
注意:
因為你建立的自定義工作目錄,對于"jenkins"沒有讀寫權限,所以可能就會導致構建失敗,執(zhí)行下面命令,給Jenkins賦予讀寫權限。
觸發(fā)構建
提交代碼
查看Jenkins
切換成觸發(fā)構建
使用密文模式,并添加綁定,選擇剛才添加的憑據(jù)
添加GitHub服務器
2.添加GitHub的憑據(jù),也就我們剛才拿到得accessToken
進入Settings頁面,找到左邊列表的Developer settings,點擊進入,可以看到如下:
點擊生成,然后勾選,,保存即可,就可以獲得token,順便說下,token要記下來,不然關閉頁面就看不到了。
在項目設置中找到webhook
設置Jenkins的hook地址到剛才添加的webhook中,
Jenkins的hook地址為:http://你的地址(端口)/github-webhook,當然這個地址應該是外網(wǎng)可以訪問的
配置GitHub
針對我們的項目,我們要在自己的項目內(nèi)添加webhook,并配置好webhook的地址。
Personal access tokens
對于任何第三方訪問GitHub的項目,是需要授權的,Jenkins也是一樣的,所以我們需要先獲取一個accessToken
Jenkins配置
上面的配置完成之后,我們需要返回Jenkins,進行再次設置。為Jenkins添加GitHub服務器。
Jenkins任務配置
因為我們已經(jīng)將觸發(fā)構建的前置步驟都做完了,那接著我們就要去修改之前的定時構建的配置了
修改代碼,上傳GitHub
終于我們將之前的定時構建改成了觸發(fā)構建,也就是我們每次Push代碼都會觸發(fā)構建,接下來我們試下。
3.NetCore部署
終于的終于,我們把構建這個步驟做好了,那么接下來當然就是要部署我們網(wǎng)站咯。
運行NetCore
運行NetCore最簡單了,我們只需要在發(fā)布后的目錄運行dotnet ***.dll就可以了,當然,前提,你要裝CoreSDK。nginx托管
雖然說上面那樣已經(jīng)運行起來,但是由于我們的環(huán)境在騰旭云上,要訪問可以用nginx進行方向代理下,下面就簡單貼下配置就可以了。
server {?
listen?80;?
location / {?
proxy_pass http:?
proxy_http_version?1.1;?
proxy_set_header Upgrade $http_upgrade;?
proxy_set_header Connection keep-alive;?
proxy_set_header Host $host;?
proxy_cache_bypass $http_upgrade;?
}?
}?
守護進程
我們已經(jīng)知道要運行Core,需要使用命令在控制臺運行,但是一旦退出了,Core自然就退出了,所以我們在Linux底下需要一個類似IIS的,來托管我們運行Core的進程,守護進程,讓其在后臺運行,自動重啟等等功能,這個就是supervisor
supervisors是C/S架構的進程控制系統(tǒng),可使用戶在類UNIX系統(tǒng)中監(jiān)控、管理進程。常用于管理與某個用戶或項目相關的進程。
安裝教程可以參考開始表格supervisor的鏈接,同樣怎么對于怎么對Core進行守護進程,文章內(nèi)也有講,一步一步按照教程來就可以了。不過我這邊還是會講下我在使用supervisor中遇到的坑。
一開始,我百度了挺多的,發(fā)現(xiàn)百度中的文章,對于supervisor的日志文件,很多都說在/etc/log/supervisor/supervisord.log這個文件內(nèi),但其實我去找的時候,發(fā)現(xiàn)并沒有,查看配置文檔,發(fā)現(xiàn)默認是在tmp中,我不知道是centeros 的版本問題,還是supervisor版本問題。
還有一個就是,在根據(jù)教程走完,配置后,要進行啟動時,可能會出現(xiàn)Unlinking stale socket /tmp/supervisor.sock?這個錯誤,我們只需要解鎖下就可以了unlink /tmp/supervisor.sock
4.總結一下
該篇文章簡單介紹了下Linux下Jenkins與GitHub自動構建NetCore與部署,很多細點我可能沒講出來,我把大大的教程貼出來,按照教程走起,就可以了,這也是我實踐過了的,肯定可以用的,非常感謝大大們,然后呢,我也想拋磚引玉下,在我Jenkins構建時有兩個問題,不知道誰可以幫我解答下。
比如我們的解決方案文件.sln并沒有在git項目的根目錄下,我們要指定需要構建的解決方案呢?
還有一個就是,在命令dotnet publish我們怎么指定發(fā)布到另一個文件夾內(nèi)呢,我知道有個參數(shù)-o|--output <OUTPUT_DIRECTORY>,我試了下,發(fā)現(xiàn)不行?dotnet publish -o /ftpfile/netCore/netCoreJenkins/JenkinsNetCore,會有以下的錯誤。
最后的最后,我的下一篇文章是《Linux下Jenkins與GitHub自動構建Node項目(Vue)》,期待0.5下吧。
原文地址:https://www.cnblogs.com/xuhuale/p/11062293.html
總結
以上是生活随笔為你收集整理的Linux下Jenkins与GitHub自动构建NetCore与部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何从现在开始写博客?
- 下一篇: Linux下搭建asp.net运行环境