今天咱們來談談NetCore在Linux底下的持續集成與部署。NetCore我就很少介紹了,持續集成用的是Jenkins,源代碼管理器用的是GitHub。咱們就跟着博文往下走吧。javascript
在進行自動構建以前,咱們須要一個能夠運行的Linux環境,並保證環境安裝了NetCoreSDK
,Git
,Jenkins
等環境,那在這邊就很少說環境的安裝,提供相對應的安裝教程,你們按照安裝就能夠,不過對Jenkins
的安裝,我會多囉嗦一句。html
囉嗦的那一句:
我在安裝Jenkins
成功的時候進入網頁,網頁會一直保持在下面圖這個狀態,沒辦法進入到開始頁面,那解決辦法是:java
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
建立Jenkins項目
linux
配置好自定義工做目錄
nginx
填寫源代碼路徑
git
配置定時任務
github
字段 | * | * | * | * | * |
---|---|---|---|---|---|
含義 | 分鐘 | 小時 | 日期 | 月份 | 星期 |
取值範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 |
示例 | |||||
每隔15分鐘執行一次 | H/15 | * | * | * | * |
每隔2個小時執行一次 | H | H/2 | * | * | * |
每隔3天執行一次 | H | H | H/3 | * | * |
每隔3天執行一次(每個月的1-15號) | H | H | 1-15/3 | * | * |
每週1,3,5執行一次 | H | H | * | * | 1,3,5 |
規則 | |||||
指定時間範圍 | a-b | ||||
指定時間間隔 | / | ||||
指定變量取值 | a,b,c |
配置構建命令
web
查看構建,並運行NetCore
注意:
由於你創建的自定義工做目錄,對於"jenkins"沒有讀寫權限,因此可能就會致使構建失敗,執行下面命令,給Jenkins賦予讀寫權限。json
配置GitHub
針對咱們的項目,咱們要在本身的項目內添加webhook
,並配置好webhook
的地址。centos
在項目設置中找到webhook
設置Jenkins的hook地址到剛纔添加的webhook
中,
Jenkins的hook地址爲:
http://你的地址(端口)/github-webhook
,固然這個地址應該是外網能夠訪問的
Personal access tokens
對於任何第三方訪問GitHub的項目,是須要受權的,Jenkins也是同樣的,因此咱們須要先獲取一個accessToken
Settings
頁面,找到左邊列表的Developer settings
,點擊進入,能夠看到以下:,
,保存便可,就能夠得到token,順便說下,token要記下來,否則關閉頁面就看不到了。Jenkins配置
上面的配置完成以後,咱們須要返回Jenkins,進行再次設置。爲Jenkins添加GitHub服務器。
Jenkins任務配置
由於咱們已經將觸發構建的前置步驟都作完了,那接着咱們就要去修改以前的定時構建的配置了
修改代碼,上傳GitHub
終於咱們將以前的定時構建改爲了觸發構建,也就是咱們每次Push代碼都會觸發構建,接下來咱們試下。
終於的終於,咱們把構建這個步驟作好了,那麼接下來固然就是要部署咱們網站咯。
運行NetCore
運行NetCore最簡單了,咱們只須要在發佈後的目錄運行dotnet ***.dll
就能夠了,固然,前提,你要裝CoreSDK。
nginx託管
雖說上面那樣已經運行起來,可是因爲咱們的環境在騰旭雲上,要訪問能夠用nginx進行方向代理下,下面就簡單貼下配置就能夠了。
守護進程
咱們已經知道要運行Core,須要使用命令在控制檯運行,可是一旦退出了,Core天然就退出了,因此咱們在Linux底下須要一個相似IIS的,來託管咱們運行Core的進程,守護進程,讓其在後臺運行,自動重啓等等功能,這個就是supervisor
supervisors是C/S架構的進程控制系統,可以使用戶在類UNIX系統中監控、管理進程。經常使用於管理與某個用戶或項目相關的進程。
安裝教程能夠參考開始表格supervisor的連接,一樣怎麼對於怎麼對Core進行守護進程,文章內也有講,一步一步按照教程來就能夠了。不過我這邊仍是會講下我在使用supervisor中遇到的坑。
一開始,我百度了挺多的,發現百度中的文章,對於supervisor的日誌文件,不少都說在/etc/log/supervisor/supervisord.log
這個文件內,但其實我去找的時候,發現並無,查看配置文檔,發現默認是在tmp
中,我不知道是centeros 的版本問題,仍是supervisor版本問題。
還有一個就是,在根據教程走完,配置後,要進行啓動時,可能會出現Unlinking stale socket /tmp/supervisor.sock
這個錯誤,咱們只須要解鎖下就能夠了unlink /tmp/supervisor.sock
該篇文章簡單介紹了下Linux下Jenkins與GitHub自動構建NetCore與部署
,不少細點我可能沒講出來,我把大大的教程貼出來,按照教程走起,就能夠了,這也是我實踐過了的,確定能夠用的,很是感謝大大們,而後呢,我也想拋磚引玉下,在我Jenkins構建時有兩個問題,不知道誰能夠幫我解答下。
好比咱們的解決方案文件.sln
並無在git項目的根目錄下,咱們要指定須要構建的解決方案呢?
還有一個就是,在命令dotnet publish
咱們怎麼指定發佈到另外一個文件夾內呢,我知道有個參數-o|--output <OUTPUT_DIRECTORY>
,我試了下,發現不行 dotnet publish -o /ftpfile/netCore/netCoreJenkins/JenkinsNetCore
,會有如下的錯誤。
最後的最後,個人下一篇文章是《Linux下Jenkins與GitHub自動構建Node項目(Vue)》,期待0.5下吧。