.Net Core自動化部署系列(二):使用Jenkins打造鏡像發布流水線
一、簡介
之前寫過一篇關於Jenkins搭配GitLab實現.net core項目自動發布到IIS的博文,比較簡單哈,只是個Demo。本篇我們將會使用Jenkins搭配GitLab實現鏡像的自動打包和上傳,這篇其實是一個鋪墊篇,因為後面我們需要使用Jenkins實現kubernetes的發布流水線,即實現鏡像的自動化打包和部署。
二、打包鏡像
Jenkin的安裝和使用在.Net Core自動化部署系列(一)中已經介紹過了哈,如果沒有安裝過的同學可以去看下,這裏我使用windows版本的Jenkins。
我們需要為Jenkins安裝一個docker-build-step的插件,系統管理-插件管理,然後Ctrl+F搜索一下:
我們需要新建一個空的.net core api項目,並且把它上傳到GitLab,同時還有Dockerfile,新建項目WebTest,Dockerfile如下:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src Copy . . RUN dotnet restore RUN dotnet build -c Release -o /app FROM buildas publish RUN dotnet publish -c Releease -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "WebTest.dll"]
好了 上傳完成後我們就不需要管了,然後再Jenkins新建一個流水線項目Pipline_Test:
然後設置一下保留近七天的10次發布記錄,大家可以根據實際情況設置哈,可選:
然後就是流水線的發布腳本了:
我先粘貼一下流水線腳本,然後再詳細介紹下,其實也蠻簡單的:
node{ stage(‘git下載‘){ git credentialsId: ‘f2d1ca50-1916-46b6-af06-6ee817f31294‘, url: ‘https://git.lug.ustc.edu.cn/DeepmountainMoose/apitest.git‘ } stage(‘構建‘){ bat ‘‘‘ cd "%WORKSPACE%/WebTest" docker build -t xxx/webtest . ‘‘‘ } stage(‘上傳到倉庫‘){ bat ‘‘‘ docker login -u xxx -p xxx docker push xxx/webtest docker rmi xxx/webtest ‘‘‘ } }
首先是git的項目下載,這裏的語句是通過截圖的語法介紹自動生成的,點擊Pipeline Syntax 如下:
然後是第二步“構建”,因為我這裏是windows,所以批處理命令需要用bat,如果是Linux請使用sh,構建的腳本比較簡單,就是cd到項目目錄下,打包鏡像哈。
打包完成後就是上傳到鏡像倉庫,我這裏上傳的是Docker Hub,如果是個人的私有鏡像倉庫,酌情修改。
然後我們點擊OK,退回到項目主頁,就可以點擊立即構建了,以下是構建日誌:
鏡像構建成功,並且上傳到了DockerHub,其實到這裏如果我們就可以編寫鏡像部署的命令來直接發布鏡像的。
當然,鏡像的發布流水線肯定不是編譯-打包-發布這麽簡單的,還需要測試環境-UT環境-正式環境,以及包含的自動化測試。
.Net Core自動化部署系列(二):使用Jenkins打造鏡像發布流水線