日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

升级Jenkins镜像,支持.NET6.0

發(fā)布時間:2023/12/4 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 升级Jenkins镜像,支持.NET6.0 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(寒天催日短,風浪與云平)

書接上文,上回咱們說到了《【Blog.Core開源】完成升級.NET 6.0》,只是代碼層面的升級,今天趁著周末正好把生產(chǎn)環(huán)境也升級下(大家可以酌情升級喲)。過程很簡單,自從用了容器化,再配上CI/CD,發(fā)布升級什么的都不是問題了,順便也把我自定義的Jenkins升級下。

Github上已經(jīng)把6.0合并到了master分支,5.0已經(jīng)歸檔了,因為還有很多小伙伴還在用5.0的嘛,目前這個分支還在維護中,等到2022年,就不維護5.0了。

目前主要使用Docker來構建鏡像,常見的主要是兩種解決方案,兩種方案又對應不同的操作。

方式一、外部編譯

很久之前在使用Jenkins的時候,采用的是編譯項目和構建鏡像分開的兩步,在Dockerfile中,只是Copy在Jenkins里發(fā)布好的可執(zhí)行文件,這種在外部編譯的方案也慢慢的被放棄了:

與之對應的Dockerfile是這樣的:

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone WORKDIR /app COPY . . EXPOSE 9291 ENTRYPOINT ["dotnet", "Blog.Core.Api.dll","-b","0.0.0.0"]

這種方案有個弊端,就是在升級我們應用服務的時候,也需要配套升級Jenkins,因為需要對應的SDK嘛是吧,所以我也為了滿足一部分在使用這種方式的小伙伴,升級了下我自己的Jenkins鏡像,自己拉取下來,run一下就行,目前這個鏡像里包含了.NET3.1/5.0/6.0的SDK,還有前端的NPM/CNPM命令。

這個鏡像我之前是放到DockerHub的,但是有小伙伴反饋需要翻墻,拉取很慢,所以我以后都統(tǒng)一放到阿里云倉庫吧。

相應的Dockerfile我已經(jīng)上傳到了Github:
https://github.com/anjoy8/devops

為了將敏捷開發(fā)中,一些資料和總結的方案給記錄下來,供大家來學習和使用,如果有比較愛好開源的小伙伴,也可以把上云的一些配置和工具什么的提交上來,一起學習。

可以直接執(zhí)行命令,就可以運行容器了:

docker run -u root --rm -d -p 3000:8080 \ --name jenkins \ -v /etc/localtime:/etc/localtime \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /home/dockerVolumes2/jenkins_home:/var/jenkins_home \ registry.cn-hangzhou.aliyuncs.com/bcvp/jenkins_with_dntcore3.1_5.0_6.0-cnpm_by_docker:latest

可以配置掛載,這樣之前的所有配置和數(shù)據(jù)都會保留的,我每次升級都指定這個掛載,實現(xiàn)無縫更新。

這就是第一種方案,但是這種方案有些麻煩畢竟,目前更流行的就是發(fā)布和構建都在Dockerfile一起的。

方式二、編譯和構建一起

先展示下代碼是這樣的,這也是官方給的:

FROM mcr.microsoft.com/dotnet/aspnet:6.0-bullseye-slim AS base WORKDIR /app EXPOSE 80FROM mcr.microsoft.com/dotnet/sdk:6.0-bullseye-slim AS build WORKDIR /src COPY ["Blog.Core.Api/Blog.Core.Api.csproj", "Blog.Core.Api/"] COPY ["Blog.Core.Extensions/Blog.Core.Extensions.csproj", "Blog.Core.Extensions/"] COPY ["Blog.Core.Tasks/Blog.Core.Tasks.csproj", "Blog.Core.Tasks/"] COPY ["Blog.Core.IServices/Blog.Core.IServices.csproj", "Blog.Core.IServices/"] COPY ["Blog.Core.Model/Blog.Core.Model.csproj", "Blog.Core.Model/"] COPY ["Blog.Core.Common/Blog.Core.Common.csproj", "Blog.Core.Common/"] COPY ["Blog.Core.Services/Blog.Core.Services.csproj", "Blog.Core.Services/"] COPY ["Blog.Core.Repository/Blog.Core.Repository.csproj", "Blog.Core.Repository/"] COPY ["Blog.Core.EventBus/Blog.Core.EventBus.csproj", "Blog.Core.EventBus/"] RUN dotnet restore "Blog.Core.Api/Blog.Core.Api.csproj" COPY . . WORKDIR "/src/Blog.Core.Api" RUN dotnet build "Blog.Core.Api.csproj" -c Release -o /app/buildFROM build AS publish RUN dotnet publish "Blog.Core.Api.csproj" -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --from=publish /app/publish . EXPOSE 9291 ENTRYPOINT ["dotnet", "Blog.Core.Api.dll"]

這種方式是在容器內(nèi)部進行項目還原,編譯和打包操作,然后執(zhí)行鏡像的構建。好處很明顯,不依賴于外部環(huán)境,只要保證有Dokcer環(huán)境,就能拉取源鏡像SDK,所以也就不需要升級上邊說的Jenkins了。

所以我現(xiàn)在都是采用這種模式。

PS:這里有個小問題,感興趣的可以了解下,為什么Dockerfile要用EXPOSE來暴露端口,雖然最終起作用的是項目真正的監(jiān)聽端口,比如asp.netcore的5000。

最終效果預覽

代碼提交后,直接在Jenkins發(fā)版,可以看到詳細的構建過程.

可以看到已經(jīng)發(fā)布成功了,效果沒啥問題:

打完收工,我的個人建議是,除非公司有要求,不然的話,還是升級下比較好的,整體很流暢,項目也無感知。

總結

以上是生活随笔為你收集整理的升级Jenkins镜像,支持.NET6.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。