Jenkins 使用
文章目录
简述
Jenkins是一个用Java编写的开源的持续集成工具
引用项目
- GitLab
GitLab 是一个用于仓库管理系统的开源项目
- Jenkins
Jenkins是一个开源软件持续集成项目
- Jexus
Jexus Web Server,简称JWS,是Linux平台上 的一款ASP.NET WEB服务器
使用场景1
GitLab (源代码管理) -> 项目(ASP.NET) -> Jenkins (持续集成 Window) -> Jexus (Linux ASP.NET Web服务器)
因为编译ASP.NET依赖Window编译工具,所以需要安装在Window系统,在Linux 只能编译.NET Core的项目
GitLab 配置
1.创建一个ASP.NET项目Pull到GitLab中
本地运行效果:
2.创建新用户用于自动化构建
当前创建了用户名:==jenkins==
用于构建工作,然后分配项目权限
为了方便管理,我是建立一个群组给jenkins然后工程项目设置共享的群组,结果如下:
生成 SSH 公钥
打开 Git Bash 工具
1 | 生成公钥 |
文件说明:
- id_rsa - 私钥
- id_rsa.pub - 公钥
查看id_rsa.pub (公钥),添加到Gitlab的SSH密钥中
1 | 查看id_rsa.pub (公钥) |
可以使用 git clone 命令来检查是否能正确使用
Jenkins 配置
选择Jenkins -> 系统管理 -> 管理插件
需要安装插件
- Git plugin (从源代码管理GitLab下载代码)
- MSBuild Plugin (使用MSBuild编译ASP.NET项目)
- Publish Over SSH (构建完成后使用SSH同步到Linux服务器)
配置SSH
点击【系统管理】-> 【系统设置】配置 Publish over SSH
配置Git 和 MSBuild
点击【系统管理】-> 【Global Tool Configuration】配置 SSH remote hosts 配置
配置 Git 和 MSBuild 信息
1 |
|
或者点击读取设置重置
建立项目配置
- 新建配置
- 源代码管理配置
添加GitLab代码仓位置地址,并配置鉴权方式,我是使用“SSH Username with private key”方式,将之前生成的私钥(id_rsa)和用户名分别填进去就可以了
3.构建触发器
按需选择促发事件
4.构建配置
使用配置好的MSBuild进行编译,更多命令参数可以查看 -> MSBuild官方参数说明
编译完后可以接入脚本做后期发布操作,所以可以加上执行“Execute Windwos batch command”
1 | @echo off |
注意这里用到rar命令,该程序一般在C:\Program Files\WinRAR\目录下,为了方便调用我将它加到环境变量里面,这样才能直接调用rar命令
5.执行效果
输出结果1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125Started by user root
Building in workspace F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build
F:\Program Files\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
F:\Program Files\Git\bin\git.exe config remote.origin.url git@192.168.124.128:HuiMei/NetDemo.git # timeout=10
Fetching upstream changes from git@192.168.124.128:HuiMei/NetDemo.git
F:\Program Files\Git\bin\git.exe --version # timeout=10
using GIT_SSH to set credentials
F:\Program Files\Git\bin\git.exe fetch --tags --progress git@192.168.124.128:HuiMei/NetDemo.git +refs/heads/*:refs/remotes/origin/*
F:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
F:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 98a5f45299f8a1c189e88cbdcee0d1eca767017b (refs/remotes/origin/master)
F:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10
F:\Program Files\Git\bin\git.exe checkout -f 98a5f45299f8a1c189e88cbdcee0d1eca767017b
F:\Program Files\Git\bin\git.exe rev-list 98a5f45299f8a1c189e88cbdcee0d1eca767017b # timeout=10
Path To MSBuild.exe: C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe
Executing the command cmd.exe /C " "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /t:Rebuild /p:Configuration=Release;Platform=AnyCPU Project/Web/Web.csproj " && exit %%ERRORLEVEL%% from F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build
[NetDemo - Build] $ cmd.exe /C " "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /t:Rebuild /p:Configuration=Release;Platform=AnyCPU Project/Web/Web.csproj " && exit %%ERRORLEVEL%%
Microsoft (R) 生成引擎版本 14.0.24720.0
版权所有(C) Microsoft Corporation。保留所有权利。
生成启动时间为 2017/5/18 14:51:15。
项目中不存在 BeforeTargets 特性中的“C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (186,61)”位置列出的目标“BeforeGenerateProjectPriFile”,将忽略该目标。
项目中不存在 BeforeTargets 特性中的“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets (843,131)”位置列出的目标“MvcBuildViews”,将忽略该目标。
项目“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\Web.csproj”在节点 1 上(Rebuild 个目标)。
CoreClean:
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\bin\Web.dll.config”。
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\bin\Web.dll”。
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\bin\Web.pdb”。
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\obj\Release\Web.csprojResolveAssemblyReference.cache”。
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\obj\Release\Web.dll”。
正在删除文件“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\obj\Release\Web.pdb”。
GenerateTargetFrameworkMonikerAttribute:
正在跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件而言都是最新的。
CoreCompile:
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE /highentropyva- /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.ComponentModel.DataAnnotations.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Configuration.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Drawing.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.EnterpriseServices.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.ApplicationServices.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.DynamicData.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.Entity.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.Extensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.Services.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.Linq.dll" /debug:pdbonly /optimize+ /out:obj\Release\Web.dll /ruleset:"E:\Program Files\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /target:library /utf8output Index.aspx.cs Index.aspx.designer.cs Properties\AssemblyInfo.cs "C:\Windows\TEMP\.NETFramework,Version=v4.0.AssemblyAttributes.cs"
_CopyAppConfigFile:
正在将文件从“Web.config”复制到“bin\Web.dll.config”。
CopyFilesToOutputDirectory:
正在将文件从“obj\Release\Web.dll”复制到“bin\Web.dll”。
Web -> F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\bin\Web.dll
正在将文件从“obj\Release\Web.pdb”复制到“bin\Web.pdb”。
已完成生成项目“F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\Web.csproj”(Rebuild 个目标)的操作。
已成功生成。
0 个警告
0 个错误
已用时间 00:00:00.20
[NetDemo - Build] $ cmd /c call C:\Windows\TEMP\hudson5880815456699306038.bat
'**************************** 开始进行打包文件压缩 ****************************'
当前目录:F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build
信息如下:
输出目录:F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\build\
打包输出全路径: F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\build\Web.zip
需要压缩目录: F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\Project\Web\
"项目输出目录已存在"
RAR 5.01 版权所有 (c) 1993-2013 Alexander Roshal 1 十二月 2013
已注册给 State Grid Corporation Of China
正在创建 压缩包 F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\build\Web.zip
正在添加 AssemblyInfo.cs 1% OK
正在添加 bin\Web.dll 8% OK
正在添加 bin\Web.dll.config 8% OK
正在添加 bin\Web.pdb 25% OK
正在添加 Index.aspx 25% OK
正在添加 Index.aspx.cs 26% OK
正在添加 Index.aspx.designer.cs 27% OK
正在添加 obj\Release\Web.csproj.FileListAbsolute.txt 28% OK
正在添加 obj\Release\Web.csprojResolveAssemblyReference.cache 32% OK
正在添加 obj\Release\Web.dll 39% OK
正在添加 obj\Release\Web.pdb 56% OK
正在添加 Properties\AssemblyInfo.cs 57% OK
正在添加 Web.config 58% OK
正在添加 Web.csproj 65% OK
正在添加 Web.csproj.FileListAbsolute.txt 66% OK
正在添加 Web.csproj.user 68% OK
正在添加 Web.csprojResolveAssemblyReference.cache 72% OK
正在添加 Web.Debug.config 74% OK
正在添加 Web.dll 81% OK
正在添加 Web.dll.config 81% OK
正在添加 Web.pdb 98% OK
正在添加 Web.Release.config 100% OK
正在添加 obj\Release OK
正在添加 bin OK
正在添加 obj OK
正在添加 Properties OK
完成
压缩成功!输出文件位置: "F:\Program Files (x86)\Jenkins\workspace\NetDemo - Build\build\Web.zip"
'**************************** 开始进行打包文件压缩 ****************************'
移动了 1 个文件。
RAR 5.01 版权所有 (c) 1993-2013 Alexander Roshal 1 十二月 2013
已注册给 State Grid Corporation Of China
正在从 Web.zip 解压缩
正在解压缩 AssemblyInfo.cs 4% OK
正在解压缩 bin\Web.dll 13% OK
正在解压缩 bin\Web.dll.config 15% OK
正在解压缩 bin\Web.pdb 21% OK
正在解压缩 Index.aspx 23% OK
正在解压缩 Index.aspx.cs 24% OK
正在解压缩 Index.aspx.designer.cs 27% OK
正在解压缩 obj\Release\Web.csproj.FileListAbsolute.txt 28% OK
正在解压缩 obj\Release\Web.csprojResolveAssemblyReference.cache 33% OK
正在解压缩 obj\Release\Web.dll 42% OK
正在解压缩 obj\Release\Web.pdb 48% OK
正在解压缩 Properties\AssemblyInfo.cs 52% OK
正在解压缩 Web.config 54% OK
正在解压缩 Web.csproj 63% OK
正在解压缩 Web.csproj.FileListAbsolute.txt 65% OK
正在解压缩 Web.csproj.user 68% OK
正在解压缩 Web.csprojResolveAssemblyReference.cache 72% OK
正在解压缩 Web.Debug.config 77% OK
正在解压缩 Web.dll 86% OK
正在解压缩 Web.dll.config 88% OK
正在解压缩 Web.pdb 94% OK
正在解压缩 Web.Release.config 98% OK
全部OK
部署成功!部署文件位置: F:\www\Test\Web.zip
Finished: SUCCESS
文件已经部署到F:\www\Test\中
使用场景2
GitLab (源代码管理) -> 项目(Java) -> Jenkins (持续集成 CentOS) -> Tomcat (Web服务器)
需要插件
- Maven Integration plugin
配置
Maven Home
点击【系统管理】-> 【Global Tool Configuration】 配置Maven信息
参考资料
- Automated build with Gitlab and Jenkins
- Jenkins CI integration
- Jenkins Gitlab持续集成打包平台搭建
- Cron在线生成
- Gitlab 部署 CI 持续集成
- MSBuild 参数说明
- Jenkins Window的管理
- Jenkins插件之构建MSBuild编译问题
- Create a Mono C# Buildserver using Jenkins and GitHub
- Mono - 官方
- 服务器上的 Git - 生成 SSH 公钥
- Create a Mono C# Buildserver using Jenkins and GitHub
- build .net application in Jenkins using MSBuild
- SSH plugin
- Jenkins系列教程之编译后使用SSH发布
- Publish Over SSH Plugin
- Jenkins+Git 集成测试(build、zip、curl)
- WinRAR的命令行模式用法介绍
- windows批处理语法
- Cygwin
- 通过 SSH 密钥验证实现在不同系统之间的脚本自动化
- WebHook 官方说明
- Git-钩子
- 用 Jenkins 自动化构建 Git 中 Maven 项目
- Shell脚本编程30分钟入门