.NET6+GitLab+Jenkins在Windows上实现CI/CD
由于目标生产服务器是windows server,所以这里只阐述在windows servers下的使用方式。
目的
编码完成后,将开发分支(dev)合并至预发分支(stage)时,自动打包发布至生产服务器。
整体流程如下:
环境搭建
1️⃣CI/CD服务器
Requirement
Jenkins
在Jenkins官网下载界面选择以Windows方式安装
Jenkins在Windows上是作为一个Windows service来安装的,所以这里需要提供一个有权限的账户。
按照提安装完成后即可进入Jenkins控制台
2️⃣生产服务器
Requirement
注意在安装WebDeploy时,选择完整安装,避免不必要的麻烦
在IIS上设置WebDeploy
配置远程服务
添加IIS管理器用户
启用WebDeploy发布
注意选择添加的IIS管理器用户以及可访问的URL
Jenkins配置
在开始之前需要先安装两个Jenkins插件
PowerShell plugin : 执行dotnet脚本及webdeploy脚本
GitLab Plugin : GitLab构建触发器选项
控制台新建Item
添加仓库地址、指定分支以及仓库的用户凭证
选择构建触发器
选择[高级],配置触发的分支,获取Webhook Secret Token
添加构建步骤,选择PowerShell
编写dotnet脚本和webdeploy命令
示例脚本如下:
dotnet restore YaYa.BMS.sln
dotnet publish src/YaYa.BMS.Host/YaYa.BMS.Host.csproj -c Release
rm -r "C:/webdeploy/bms"
mkdir "C:/webdeploy/bms"
mkdir "C:/webdeploy/bms/bms-dev"
cp "src/YaYa.BMS.Host/bin/Release/net6.0/publish/*" "C:/webdeploy/bms/bms-dev/" -r
rm -r "C:/webdeploy/bms/bms-dev/appsettings.json"
rm -r "C:/webdeploy/bms/bms-dev/web.config"
msdeploy.exe -verb:sync -source:iisApp="C:/webdeploy/bms/bms-dev" -dest:package="C:/webdeploy/bms/bms-dev.zip"
msdeploy.exe -verb:sync -source:package="C:/webdeploy/bms/bms-dev.zip" -dest:iisApp=JenkinsDemo,wmsvc=xx.xx.x.xx,username=JenkinsWebDeploy,password="123",skipAppCreation=false -allowUntrusted=true -skip:objectName=dirPath,absolutePath="logs",skipAction=Delete -skip:objectName=filePath,absolutePath="appsettings.json",skipAction=Delete -skip:objectName=filePath,absolutePath="web.config",skipAction=Delete -enablerule:AppOffline
保存配置
GitLab配置
在网址和Secret令牌上输入在Jenkins上获取的GitLab webhook Url和Webhook Secret Token
保存并测试一下是否成功
演示
❤️ 感谢他们在我实践过程中给予我的帮助,thanks!
@Lucky
@zengande