使用Jenkins来发布和代理.NetCore项目
Back to
Study!
注:書(shū)接上文,上回《【CI/CD系列】使用Docker安裝Jenkins》咱們說(shuō)到了使用Docker鏡像的方式,來(lái)建立Jenkins服務(wù),用來(lái)持續(xù)集成和持續(xù)發(fā)布項(xiàng)目,但是上一篇文章有兩個(gè)問(wèn)題:
01
創(chuàng)建的容器不能操作和使用宿主機(jī)的docker,導(dǎo)致我們無(wú)法在Jenkins服務(wù)中去使用docker命令去構(gòu)建asp.netcore項(xiàng)目鏡像。
02
文章只是重點(diǎn)講解了下如何構(gòu)建和配置Jenkins服務(wù)應(yīng)用,那接下來(lái)如何發(fā)布項(xiàng)目和代理項(xiàng)目,沒(méi)有具體說(shuō)明。
所以今天就重點(diǎn)說(shuō)一下這兩點(diǎn),其實(shí)也是很簡(jiǎn)單的,昨天的基本內(nèi)容已經(jīng)三分之二了,今天就是簡(jiǎn)單的補(bǔ)充說(shuō)明一下。
PS:最終的鏡像,我已經(jīng)推送到dockerHub上了,可以自行pull下來(lái),然后按照下文的命令執(zhí)行下即可。
當(dāng)然相關(guān)的視頻版本我會(huì)接下來(lái)的兩周,配合著我的六個(gè)項(xiàng)目遷移的時(shí)候進(jìn)一步講解,現(xiàn)在我已經(jīng)在生產(chǎn)環(huán)境構(gòu)建好了,域名就是:
http://jenkins.neters.club
下一步就是把項(xiàng)目遷移了,這樣就能省很多時(shí)間,甚至就不需要登錄服務(wù)器操作了。
1、生成新容器
同時(shí)支持 SDK 和 Docker 的容器實(shí)例
還是昨天的鏡像文件,只不過(guò)這次啟動(dòng)容器實(shí)例的命令不一樣了,用這個(gè):
第一行表示啟動(dòng)一個(gè)容器名為Jenkins2的對(duì)外開(kāi)放3001端口實(shí)例。
第二行表示將宿主機(jī)上面的docker命令行工具掛載到容器中,使jenkins用戶(hù)能夠執(zhí)行docker命令。
第三行表示將宿主機(jī)上的docker.sock掛載到容器中的相應(yīng)位置,使得容器中的dockercli能跟宿主機(jī)的docker通信。
第四行表示掛載我們創(chuàng)建的配置文件存放目錄到指定的文件夾。
啟動(dòng)好了以后,就可以瀏覽器里正常的訪(fǎng)問(wèn){ip}:3001端口了,接下來(lái)就是和上篇文章里說(shuō)的一樣,無(wú)腦配置一波就行了。
配置的過(guò)程中,如果插件有安裝失敗的,不用擔(dān)心,只要能繼續(xù)我往下走,就沒(méi)事,因?yàn)楹笈_(tái)管理里,我們可以繼續(xù)安裝的:
這個(gè)時(shí)候我們可以進(jìn)入到容器里,執(zhí)行命令,可以看到該有的命令都有了:
如果僅僅是查看Jenkins密碼,不用進(jìn)入也可以,直接一句話(huà)即可
是不是很方便。
2、構(gòu)建項(xiàng)目
創(chuàng)建一個(gè)Jenkins工程,使用CLI構(gòu)建netcore應(yīng)用
01、首先還是需要一個(gè)實(shí)例項(xiàng)目
在上篇文章中,我們創(chuàng)建了一個(gè)空的webapi項(xiàng)目,現(xiàn)在要?jiǎng)?chuàng)建Docker項(xiàng)目了,肯定就需要一個(gè)Dockerfile文件了:
這個(gè)每個(gè)人肯定都能看懂,因?yàn)槭莢s官方給我們創(chuàng)建的,只不過(guò)要注意一點(diǎn),注意路徑問(wèn)題,要放到項(xiàng)目根目錄,也就是和vs同級(jí)目錄。
02、配置Jenkins工作任務(wù)
基本的和上篇文章一樣,還是一個(gè)自由風(fēng)格的模式,配置Git地址,和構(gòu)建命令。
之所以注釋了,是因?yàn)榈谝淮螛?gòu)建,宿主機(jī)里不存在容器和鏡像,以后每次修改代碼,都是刪掉容器和鏡像,重新生成。
但是,上邊用的Dockerfile是vs官方給我們默認(rèn)創(chuàng)建的,如果是國(guó)內(nèi)的服務(wù)器,構(gòu)建的時(shí)候會(huì)特別慢,那我們就用第二種方案,先發(fā)布再構(gòu)建鏡像,而不是在構(gòu)建鏡像的過(guò)程中發(fā)布,這樣的話(huà)構(gòu)建鏡像的時(shí)候,可以使用國(guó)內(nèi)的一些源鏡像。
首先配置鏡像文件Dockersfile,注意這個(gè)是在最終的publish文件夾里,所以我就右鍵屬性,始終復(fù)制了:
然后編輯我們的Jenkins的構(gòu)建shell命令:
03、點(diǎn)擊構(gòu)建,查看結(jié)果
可以看到我們?cè)贘enkins中,構(gòu)建了一個(gè)hello-world-docjek的項(xiàng)目鏡像,然后生成了一個(gè)容器實(shí)例。
因?yàn)槲覀兊腄ocker是宿主機(jī)的,可以在宿主機(jī)查看全部容器:
而且用Jenkins是直接將端口映射到公網(wǎng)的,直接訪(fǎng)問(wèn){ip}:5055,就可以看到效果了,比如我們剛剛測(cè)試的我的http://neters.club:5055/weatherforecast:
04、Nginx做域名匹配和反向代理
剩下的就是很簡(jiǎn)單了,簡(jiǎn)單的在nginx里配置下就行了,將端口映射到域名下,然后配置下跨域的反向代理,整體的開(kāi)發(fā)流程就是這么簡(jiǎn)單。
以后我們每次修改代碼,就可以直接在Jenkins里構(gòu)建一下,然后就能快速的部署了,是不是很方便。
當(dāng)然,最后還有發(fā)郵件推送消息,編輯觸發(fā)器,視圖管理,docker-compose編排或者其他的知識(shí)點(diǎn),等待視頻的時(shí)候再說(shuō)吧。
總結(jié)
以上是生活随笔為你收集整理的使用Jenkins来发布和代理.NetCore项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【翻译】.NET 5 Preview8发
- 下一篇: asp.net ajax控件工具集 Au