使用jenkins 實現 .net core項目自動發布到 docker


在Docker內運行Jenkins

pull鏡像 

docker pull jenkins/jenkins:lts

Dockerfile

FROM jenkins/jenkins:lts

USER root
ARG dockerGid=999

RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group

USER jenkins

Build

docker build . -t my-jenkins

創建用戶並加入docker組

useradd jenkins
usermod -G docker jenkins

Run

docker run --name jenkins -p 8080:8080 -p 50000:50000 -e TZ="Asia/Shanghai" -v /app/jenkins/jenkins_home:/var/jenkins_home -v /app/jenkins/settings:/var/settings -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -d my-jenkins
注意這兩個volume參數(將jenkins容器內的docker命令指向了宿主機):
-v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/usr/bin/docker
修改文件夾所有者
 chown -R 1000:1000 /app/jenkins
 chown -R 1000:1000 /var/run/docker.sock

 

初始化

 

按提示填入密碼,安裝推薦的插件

 

 

 

 

 進入

 

 

測試下容器內docker是否可用

 

 准備.net Core 項目

 我創建了個.net core 3.1的MVC項目

 

 並推送到Gitee。

 

 Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["JenkinsWebDemo.csproj", ""]
RUN dotnet restore "./JenkinsWebDemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "JenkinsWebDemo.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "JenkinsWebDemo.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "JenkinsWebDemo.dll"]

這里拉取了兩個鏡像一個帶SDK是用來build,一個用來發布。

持續部署

然后點擊系統管理->插件管理->下載Gitee插件

 然后,系統管理->系統設置,配置如下:
具體配置過程參考:https://gitee.com/help/articles/4193#article-header0

 

 

 

配置完后保存。

回到首頁,新建一個任務:

 

 

 

然后配置任務:

 

 

  從自己的gitee 中找到Repository UR

 

然后配置Build Triggers

 

 

 

最后,最重要的是Build,下拉框選擇執行shell:

 

#!/bin/bash
# 獲取短版本號
GITHASH=`git rev-parse --short HEAD`
docker stop testjenkins
docker rm testjenkins
docker build -t testjenkins:$GITHASH .
docker tag testjenkins:$GITHASH testjenkins:latest
docker run --name testjenkins -d -p 5000:80 testjenkins:latest
Jenkins就是根據前面的觸發器觸發這個腳本去構建鏡像,持續部署。
這邊設的是每兩分鍾,可以自行設置Gitee webhook 觸發構建,Gitee webhook參考文檔: https://gitee.com/help/articles/4193#article-header13

配置完后保存,查看任務,可以看到構建部署歷史:

 

 看一下構建好的網站

 

 

 也可以設置成根據webhook,推送代碼時自動構建。

在Jenkins中設置WebAppNet

 

 

Gitee中的配置

 

 這樣當我們推送代碼到Gitee時候就會被自動構建。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM