Jenkins+docker +net core 3.1 實現自動化部署
阿新 • • 發佈:2020-12-29
-
拉取jenkins
docker pull jenkins/jenkins
-
啟動docker容器
mkdir /usr/local/jenkins
chown -R 1000:1000 /usr/local/jenkins
sudo chown -R 1000:1000 /var/run/docker.sock
docker run -itd -p 8080:8080 -p 50000:50000 --name myjenkins --privileged=true -v /usr/local/jenkins:/var/jenkins_home -v /usr/bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
-
開啟瀏覽器配置Jenkins
http://118.24.51.65:8080/
-
檢視管理員密碼
docker logs myjenkins
或
進入myjenkins容器
docker exec -it myjenkins bash -
安裝推薦外掛 (等待安裝完成)
-
配置管理員密碼
-
修改根目錄(加速)
-
/usr/local/jenkins/hudson.model.UpdateCenter.xml
<sites>
<site>
<id>default</id>
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
</site>
</sites> -
等jenkins初始化完成後找到跟目錄下面updates檔案中default.json檔案做如下修改 /usr/local/jenkins/updates
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
-
重啟jenkins
docker restart myjenkins
-
-
Jenkins 系統管理-指令碼命令列,執行指令,修改時間
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
-
安裝外掛
Publish Over SSH
-
配置 進入系統管理-》系統設定 找到Publish Over SSH
-
配置linux地址
-
【原始碼管理】配置GIT地址
-
【構建觸發器】 選擇輪詢方式 * * * * * 表示每分鐘輪詢一次
-
構建環境【Delete workspace before build starts】勾選 表示刪除工作空間 、【Abort the build if it's stuck】 超時時間會終止
-
構建shell命令(映象跟容器名要小寫)
清空多餘的映象(參考)
docker image prune
docker 下拉asp.net core 所需要的映象(防止超時)
-
registry.cn-hangzhou.aliyuncs.com/newbe36524 阿里雲加速
docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster
參考網站Dockerfile
ENV TIMEZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIMEZONE /etc/localtime && echo $TIMEZONE > /etc/timezone
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM registry.cn-hangzhou.aliyuncs.com/newbe36524/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM registry.cn-hangzhou.aliyuncs.com/newbe36524/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV TIMEZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIMEZONE /etc/localtime && echo $TIMEZONE > /etc/timezone
ENTRYPOINT ["dotnet", "WebApplication1.dll"]