注意:
也许是这么用,没有深入研究。
另外使用了podman代替docker。
第一步:将代码上传到码云(git其他的也可以)
我用了原来的dotnet示例代码。
创建了一个mvc示例项目,一个单元测试项目
第二步,将代码上传到马云
略
第三步配置Jenkins
我选择了FreeStyle Project
这里将git的地址复制进来
检查提交后自动进行构建
这里我使用的是powershell脚本
构建后有许多可以操作的选项
测试发布一个构建
效果:
检测到有提交
好了
下面是构建日志
Started by an SCM change Running as SYSTEM Building in workspace /var/lib/jenkins/workspace/JenkinsDotnetTest The recommended git tool is: NONE No credentials specified > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/xxxx/jenkins-dotnet-test.git # timeout=10 Fetching upstream changes from https://gitee.com/xxxx/jenkins-dotnet-test.git > git --version # timeout=10 > git --version # ‘git version 2.18.4‘ > git fetch --tags --progress -- https://gitee.com/xxxx/jenkins-dotnet-test.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 44d5c510f4e08b593ef28e054a0c501d9e75f9e6 (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 44d5c510f4e08b593ef28e054a0c501d9e75f9e6 # timeout=10 Commit message: "单元测试" First time build. Skipping changelog. [JenkinsDotnetTest] $ pwsh -NonInteractive -File /tmp/jenkins8561056685409721394.ps1 单元测试 Test run for /var/lib/jenkins/workspace/JenkinsDotnetTest/test/JenkinsMsTest/bin/Debug/netcoreapp3.1/JenkinsMsTest.dll(.NETCoreApp,Version=v3.1) Microsoft (R) Test Execution Command Line Tool Version 16.3.0-dev+55e7e45431c9c05656c999b902686e7402664573 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... A total of 1 test files matched the specified pattern. Test Run Successful. Total tests: 1 Passed: 1 Total time: 2.0783 Seconds [JenkinsDotnetTest] $ pwsh -NonInteractive -File /tmp/jenkins3424907451063664942.ps1 启动自动构建 生成docker镜像 STEP 1: FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base STEP 2: WORKDIR /app --> Using cache c6361ead7d41eedec2ca44527a6d6535ad3b6dba06024f9c7e54967762d503b0 STEP 3: EXPOSE 80 --> Using cache e6040c59539d36ec82a0790d7f0c4b3efd458d32afe2e2ad4fd9ab79d2422a50 STEP 4: EXPOSE 443 --> Using cache 68d023851917676fcf9d49baa7fbc2d640f45736ab62d1c5de531f63501f482c STEP 5: FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build STEP 6: WORKDIR /src --> Using cache a56e1410c0613f5da417a1be839872a4746e791c8e73d348aa21e17b3b45bfac STEP 7: COPY ["src/JenkinsTest.csproj", "src/"] --> Using cache f802faf8209514024e2f38ce9516b0078629e5db537f6d6e3f74c681b5b9d249 STEP 8: RUN dotnet restore "src/JenkinsTest.csproj" --> Using cache dd8fef4ceb6157cab235b5baf11f0449e23fa977b00dbfc1b4ac2f464e2f3c60 STEP 9: COPY . . ef4723773175e1c467f9dcc290e6fbd47b45ecd9323a6e00ebd46f3e8ecbadcf STEP 10: WORKDIR "/src/src" 1b11759c7c580e7ba51c15d01856c63b0d0618a7b3a14c48fb773dfaf3cd069f STEP 11: RUN dotnet build "JenkinsTest.csproj" -c Release -o /app/build Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. JenkinsTest -> /app/build/JenkinsTest.dll JenkinsTest -> /app/build/JenkinsTest.Views.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:14.16 e4fd37da9353664babafab4d3d0e8c83e78f2f18cdda0c0e41230f32278171a2 STEP 12: FROM e4fd37da9353664babafab4d3d0e8c83e78f2f18cdda0c0e41230f32278171a2 AS publish STEP 13: RUN dotnet publish "JenkinsTest.csproj" -c Release -o /app/publish Microsoft (R) Build Engine version 16.7.0+7fb82e5b2 for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. JenkinsTest -> /src/src/bin/Release/netcoreapp3.1/JenkinsTest.dll JenkinsTest -> /src/src/bin/Release/netcoreapp3.1/JenkinsTest.Views.dll JenkinsTest -> /app/publish/ a4e523cccc824e11510abd4685b48ee889f2b00f75e3e8ea8952761bfbd7dc49 STEP 14: FROM 68d023851917676fcf9d49baa7fbc2d640f45736ab62d1c5de531f63501f482c AS final STEP 15: WORKDIR /app --> Using cache 852684f3090eaef3ef3f05e4783e021e84ecda419af2b004b3960b1a54b5e211 STEP 16: COPY --from=publish /app/publish . 7f62a9f0711bb292f7faf2777a33654df3a3689892c3b96b0a21e6ab4257d1e6 STEP 17: ENTRYPOINT ["dotnet", "JenkinsTest.dll"] STEP 18: COMMIT aspnetcoretest:v1 259c7a26ee4525742ab7105f9db18ea28e052ee195bc2cd79f7cb4deabb3d6e7 [JenkinsDotnetTest] $ pwsh -NonInteractive -File /tmp/jenkins630220471738520011.ps1 部署镜像 adb4a8e220452224f5a95b5d0f6067e780c37e5a4ec60654fe9141871ac4596e --2020-09-20 22:31:51-- http://localhost:8088/ 正在解析主机 localhost (localhost)... ::1, 127.0.0.1 正在连接 localhost (localhost)|::1|:8088... 失败:Connection refused。 正在连接 localhost (localhost)|127.0.0.1|:8088... 已连接。 已发出 HTTP 请求,正在等待回应... 读取文件头错误 (Connection reset by peer)。 重试中。 --2020-09-20 22:31:52-- (尝试次数: 2) http://localhost:8088/ 正在连接 localhost (localhost)|127.0.0.1|:8088... 已连接。 已发出 HTTP 请求,正在等待回应... 读取文件头错误 (Connection reset by peer)。 重试中。 --2020-09-20 22:31:54-- (尝试次数: 3) http://localhost:8088/ 正在连接 localhost (localhost)|127.0.0.1|:8088... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:未指定 [text/html] 正在保存至: “index.html.1” 0K .. 269M=0s 2020-09-20 22:31:54 (269 MB/s) - “index.html.1” 已保存 [2174] [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] done Finished: SUCCESS
上面测试链接的时候,有几处错误,应该是我电脑在转码,速度比较慢,所以失败了,但是尝试第三次也成功了。
一下篇再搭建一个虚拟机,当作发布服务器。