前言:
Jenkins 是一款开源的 CI&CD 软件,用于自动化各种开发任务,包括构建、测试和部署软件等。支持docker、windows、linux 系统,下面让我们用一张图了解一下:
Jenkins就像是你刚买的一部手机,手机本身没有太多的APP,需要你自己根据需求去下载安装你想要的应用软件。有些人的生产环境是JAVA、PHP、Python、C#等,所在的jenkins的配置有所不同,但原理都是一样。下面我们着重讲解C#环境下的配置及使用方法。
参考来源:
https://www.jenkins.io/zh/doc/
https://www.w3cschool.cn/jenkins/
1、 准备工作
1. java sdk 1.8版本
2. 下载 Jenkins
3. 部署服务器需要安装netcore sdk2.1以上、git工具。安装这2个软件
1.1安装方法
安装Jenkins windows软件包,
安装后打开页面如下:
默认密码的位置:用浏览器打开即可
C:\Windows\system32\config\systemprofile\AppData\Local\Jenkins\.jenkins\secrets\initialAdminPassword
打开后将密码复制到上面中点击继续,选择第一个安装推荐的插件:
安装所有推荐的插件
安装后创建一个管理员用户,
配置 jenkins URL:这里可以是默认的localhost:8080
1.2 admin密码更改忘记情况
如果权限丢失,请删除这里面所有的文件,重新安装
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\(这里是默认安装后的jenkins的工作路径,后面内容讲解如何修改默认路径)
获取请自行百度去查找 修改config.xml
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins\ config.xml
第一次安装成功后,建议把admin的相关配置都备份一遍,防止后面修改权限时admin权限丢失(下面的路径全部备份)
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\
1、删除Jenkins目录下config.xml文件中下面代码,并保存文件。
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
1.3修改默认的工作空间
· 添加环境变量
· 前往默认安装的jenkins目录中把需要保留的配置内容复制出来
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkin
如果找不到 一般在这里
C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Jenkins.jenkin
· 如果是直接安装的jenkins需要到安装目录修改配置
比如D:\Program Files\Jenkins\Jenkins.xml
修改成这样
最后把刚刚从这个路径(
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkin)备份下来的文件拷贝到新建的路径中去(下面圈出来的路径):
打开windows服务,搜索jenkins,右击重启服务。
1.4环境变量
nuget相关环境变量配置 这一步可以忽略不一定需要
增加环境变量
然后在job中设置环境变量
继续配置全局环境变量,并应用到msbulid的参数中去
1.5下载.NET sdk
https://download.visualstudio.microsoft.com/download/pr/674a9f7d-862e-4f92-91b6-f1cf3fed03ce/e07db4de77ada8da2c23261dfe9db138/dotnet-sdk-5.0.103-win-x64.exe
这里需要下载NET 2.1SDK以上的版本 我这里推荐直接安装.Net 5.0 sdk.
可以先用cmd 命令 查看自己是否已经安装好:dotnet sdk –version
为什么这里要安装这个sdk,因为后面的execute shell 需要执行dotnet 的相关命令,相关文档是:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet
1.6安装git 工具
为什么要安装git工具?因为下文中对job的配置环节中有一个execute shell 需要执行dotnet 相关命令,有人会问为什么dotnet 的相关命令不能用power shell 进行编译和发布,目前尝试过,无法编译通过,这条路行不通,只能使用execute shell 进行执行命令。(这里解释一下为什么要安装git才能去在windows中执行execute shell,因为execute shell是linux才能执行的,windows默认不支持,git中自带这个功能,因此要安装git)
下面是安装git的相关截图:
首先打开GitExtensions-2.48.03-SetupComplete.msi 安装这个软件
下一步
下一步
下一步
下一步
下一步
下一步直接安装,随后有弹窗,点击OK
下一步
下面是核心的git安装,继续…
2. 安装必要插件
进入后台后需要自己安装插件
2.1这里整理所有需要提前安装的插件
SSH、Publish Over SSH、build environment、MSBuild Plugin、 Role-based Authorization Strategy、 Gitlab(不需要用的可以不安装)、 PowerShell plugin、Environment Injector Plugin、 Nuget Plugin、 Workspace Cleanup Plugin、Branch API Plugin、workspace cleanup、NodeJS、Simple Theme/ material-theme
我这里需要安装gitlab相关插件(因为我要从gitlab中获取代码,不需要的朋友可忽略安装),那么下面将搜索到的相关的gitlab插件全部选中安装。
2.2安装SSH、Publish Over SSH、PowerShell插件(最重要)
2.3安装MSBuild Plugin插件 这步可以省略
打开 Jenkins 系统管理,找到管理插件选项,点击进入,切换到可选插件选项卡在搜索框输入 MSBuild 搜索。在搜索结果中找到 MSBuild 插件并安装。
配置 MSBuild
打开 Jenkins 系统管理,找到 Global Tool Configuration 选项,点击进入。找到 MSBuild 并配置如下
Msbuild 路径 备份下来,后面job配置需要用到:
D:\Program Files\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe
MSBuild 的一般路径是自己安装vs软件的路径(我安装的是vs2019,上面的Msbuild 路径已经介绍)。
将自己的路径填入即可。
2.4安装Role插件,并配置相关权限
配置 jenkins 权限管理:基于角色的权限管理,先创建角色和用户,给角色授权,然后把用户管理到角色。
更改认证方式:
Jenkins —> 系统管理 —> 全局安全配置
默认创建的用户登录后可以做任何操作,取决于默认的认证授权方式。
创建新用户:
Jenkins ---> 系统管理 ---> 管理用户:
创建角色:
Jenkins —> 系统管理 -> Manage and Assign Roles
添加角色:
对角色分配权限:
将用户关联到角色:
测试普通用户登录: (建议先不要退出jenkinsadmin账号,换个浏览器登陆)
登录成功之的界面,没有系统管理权限,只能执行被授权过的 job 且没有了管理员权限。
配置 jenkins 管理员邮箱:
Jenkins —> 系统管理 —> 系统设置
测试发送邮件
如果代码仓库是GIT,那么请提前安装和git相关工具,我这里用的是Git Extensions,安装后自己百度去生成ssh的公钥和私钥,网上很多。
生成后到目录C:\Users\Administrator\.ssh 中找到id_rsa 复制出私钥
配置 jenkins 自动拉取代码:
jenkins 服务器添加证书:
Jenkins -> 凭据 -> jenkins —> 全局凭据 —> 添加凭据
以上步骤如果验证失败可以直接添加gitlab账户和相关ssh秘钥即可。
3.5安装build environment
3.6安装Environment Injector
3.7 安装workspace cleanup插件
3.8安装Simple Theme / material-theme更换主题
参考:http://afonsof.com/jenkins-material-theme/ 可以在线生成主题
https://blog.csdn.net/DynastyRumble/article/details/103910441 要用这个
https://www.pianshen.com/article/51701037320/ material-theme更换主题
http://localhost:8080/userContent/layout/jenkins-material-theme.css
http://localhost:8080/userContent/layout/title.css
3.配置job项目(c# 后端)
3.1新建项目
点击新建item
输入项目名称、选择模式。
3.2配置源代码的来源
这里我选择的是git,对于下面的RUL和全局凭证,请参考2.4全局凭证设置,如果看不懂,我这里再截图提供说明:
选择 strores scoped to Jenkins
选择全局凭证
选择添加凭证
3.3构建环境配置
其中构建环境可能需要用到nuget,我提前在环境变量中添加了
至于为什么要加这里面涉及的内容太复杂,这里简单描述一下:
每个研发人员的账户下都会产生一个默认的nuget包目录,每个人员的路径不一致,那么到服务器上通过jenkins来编译代码的时候需要一个统一的nuget包路径,因此这里做了一个全局的配置路径。
那么这里需要添加相关环境变量
3.4构建
3.4.1先添加一个execute shell
dotnet restore
dotnet clean
dotnet build
dotnet publish -o publish
3.4.2再添加一个powershell
#Step1: 設定來源目錄
$SourceFolder = "D:\JenkinsWorkSpace\Jenkins\.jenkins\workspace\MicNetCore\publish"
#Step2: 設定覆蓋到IIS WebSite的目錄上
$DestinationFolder = "D:\Project\NewNetCoreNfine\publish"
#Step3:設定需要排除的文件(作废 不能排除文件夹,只能排除文件)
#$ExcludeItems = @("appsettings.json","web.config","\wwwroot\","\logs\")
#这个可以排除文件夹和文件
$ExcludeItems = "D:\JenkinsWorkSpace\Jenkins\.jenkins\workspace\exclude\exclude_NewNetCoreNfine\exclude.txt"
#Step4:設定备份压缩的文件路径
$CurrentTime =Get-Date -Format 'yyyyMMddHHmmsssss'
$ZipFolder = "D:\Project\NewNetCoreNfine\"+$CurrentTime+".zip"
#Step5:停止IIS程序池和站点
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"NewNetCoreNfine"
C:\Windows\System32\inetsrv\appcmd.exe stop site /site.name:"NewNetCoreNfine"
Write-Host 'IIS应用程序池停止准备复制代码...'
#Step6: 压缩原项目文件,以时间格式打包
#将文件或文件夹test压缩为test.zip
Compress-Archive -Path $DestinationFolder -DestinationPath $ZipFolder
#将文件test.zip解压到test目录下 这个暂时不需要
#Expand-Archive -Path E:\test.zip -DestinationPath F:\test
#Step7: 執行資料夾覆蓋 【-Recurse】包含子資料夾底下的內容 【-force】強制覆蓋
#Copy-Item -Path $SourceFolder -Recurse -Destination $DestinationFolder -Exclude $ExcludeItems -force
#xcopy "D:\JenkinsWorkSpace\Jenkins\.jenkins\workspace\MicNetCore\publish" "D:\Project\NewNetCoreNfine\publish" /s/e/y/exclude:D:\JenkinsWorkSpace\Jenkins\.jenkins\workspace\exclude\exclude_NewNetCoreNfine\exclude.txt
xcopy $SourceFolder $DestinationFolder /s/e/y/exclude:$ExcludeItems
Write-Host '代码已覆盖...'
#Step8: 启动IIS程序池和站点
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"NewNetCoreNfine"
C:\Windows\System32\inetsrv\appcmd.exe start site /site.name:"NewNetCoreNfine"
最后要勾选这个
3.4.3使用方法(构建项目)
点击正在构建的项目,如下图:
点击控制台查看编辑结果
3.5对job增加权限
https://blog.csdn.net/xuhailiang0816/article/details/80307523
系统设置 >> Manage and Assign Roles
下面要对job加权限
3.6构建后操作
添加成功后
这里面的高级选项内容默认即可
我这里勾选了无论什么情况都清除工作空间,给服务器腾空间。
4.配置job项目(前端)
https://blog.csdn.net/zhenghongcs/article/details/103708108
http://www.mamicode.com/info-detail-3032198.html
执行shell命令
#列出当前的npm,node版本(只起个提示作用)
npm -v
node -v
#安装node-sass
SASS_BINARY_SITE=https://npm.taobao.ort/mirrors/node-saas/ npm install node-sass
#执行项目中的npm 安装完成后打包。
npm config set registry https://registry.npm.taobao.org
npm install
npm run build
本文暂时没有评论,来添加一个吧(●'◡'●)