.NET6+GitLab+Jenkins在Windows上实现CI/CD

由于目标生产服务器是windows server,所以这里只阐述在windows servers下的使用方式。

目的

编码完成后,将开发分支(dev)合并至预发分支(stage)时,自动打包发布至生产服务器。

整体流程如下:

环境搭建

1️⃣CI/CD服务器

Requirement

Java17、.NET SDKWedDeploy

Jenkins

Jenkins官网下载界面选择以Windows方式安装

Jenkins在Windows上是作为一个Windows service来安装的,所以这里需要提供一个有权限的账户。

按照提安装完成后即可进入Jenkins控制台

2️⃣生产服务器

Requirement

.NET RuntimeWedDeploy

注意在安装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 UrlWebhook Secret Token

保存并测试一下是否成功

演示

❤️ 感谢他们在我实践过程中给予我的帮助,thanks!

@Lucky

@zengande

posted @ 2022-11-04 16:03  WuMiaoMiao  阅读(623)  评论(0编辑  收藏  举报