.net使用Jenkins 构建、部署到windows服务器上

因权限问题,本次构建、部署是在本机上完成的

1、安装Jenkins

📥 第一步:下载 Jenkins Windows 安装包

  1. 打开浏览器,访问官方下载页:
    👉 https://www.jenkins.io/download/
  2. 在 "Long-term Support (LTS)" 区域,点击 Windows 图标(会下载 .msi 文件)
    • 文件名类似:jenkins-2.440.3-windows-x64.msi
    • ⚠️ 不要下载 .war 或 Generic Java Package,我们要的是 Windows Installer (.msi)

🔧 第二步:准备一个专用部署用户(关键!)

在你的 Jenkins 服务器 上操作:

  1. 以 管理员身份 打开 PowerShell 或 CMD
  2. 创建新用户(例如叫 jenkins-user):
  3. 💡 后续你需要在 目标服务器(TEST/PROD) 上也创建同名同密码的用户!

🚀 第三步:运行 Jenkins 安装程序(.msi)

❌ 不要选 "Run service as LocalSystem" ------ 它不能访问网络!

  1. 双击下载好的 jenkins-xxx-windows-x64.msi
  2. 按提示点击 Next ,直到出现 "Service Logon Identity" 页面

关键选择:

  1. ✅ 勾选 "Run service as local or domain user"
  2. 在下方输入:
    • User name : .\jenkins-user
      (注意:. 表示本地计算机,这是 Windows 本地用户的标准写法)
    • Password : P@ssw0rd123!
  3. 继续点击 Next ,使用默认端口 8080,完成安装

🔍 第四步:验证 Jenkins 是否正常运行

打开浏览器,访问:

复制代码
http://localhost:8080
  1. 如果看到 "Unlock Jenkins" 页面,说明安装成功!
  2. 获取初始密码(打开 PowerShell)
  3. 输入 type C:\ProgramData\Jenkins\.jenkins\secrets\initialAdminPassword
  4. 复制密码,粘贴到网页,继续初始化(安装推荐插件即可)

🛡️ 第五步:为目标服务器创建同名用户(部署前必须做!)

Jenkins 要部署到 任何一个服务器上,这些机器必须信任 jenkins-user。

  1. 以管理员身份登录目标服务器
  2. 打开 PowerShell,运行:
复制代码
   # 创建同名同密码的本地用户
   2net user jenkins-user P@ssw0rd123! /add
   3
   4# 加入管理员组(或至少给 C:\Apps 写权限)
   5net localgroup administrators jenkins-user /add

🧪 第六步:测试 Jenkins 能否访问目标服务器

1、在 Jenkins 服务器 上手动测试:

net use \\HIT-I07812-N\C$ /user:jenkins-user P@ssw0rd123!

如果返回:

复制代码
The command completed successfully.

✅ 说明 Jenkins 未来可以通过此账号部署!

安装Jenkins的过程中,可能会提示java包不匹配的问题,下载安装即可

2、配置 Jenkins 实现 .NET 6 应用的自动构建与部署(Windows 环境)

✅ 目标

  • 从 Git 仓库拉取代码(如 Gitblit)
  • 使用 dotnet build + dotnet publish 构建 .NET 6 应用
  • 自动部署到 Windows 测试服务器(如 \\TEST-SERVER\C$\Apps\MyApp)
  • 通过 Windows 服务运行应用

前提条件确认

🛠️ 第一步:在 Jenkins 中安装必要插件

  1. 进入 Manage Jenkins → Plugins → Available plugins ,搜索并安装以下插件(勾选后点"Install without restart"):
    • Git
    • Pipeline
    • Credentials Binding
    • Workspace Cleanup(可选)

安装完成后重启 Jenkins(如果提示需要)。

🔐 第二步:配置凭据(Credentials)

1. Git 仓库凭据(用于拉代码)

  • Kind : Username with password
  • Scope: Global
  • Username: 你的 Gitblit 用户名
  • Password: 密码
  • ID : git-creds
  • Description : Gitblit access

📂 第三步:准备 .NET 6 项目结构

确保你的项目根目录包含:

注意:.git文件最好和Jenkinsfile同一级

在 .csproj 中启用自包含发布(推荐):

这样 dotnet publish 会生成 MyApp.exe,可直接作为 Windows 服务运行。

📜 第四步:创建 Jenkinsfile(核心)

在项目根目录新建文件 Jenkinsfile,内容如下:

pipeline {

agent any

environment {

APP_NAME = 'API' // 为IIS上的名称

DEPLOY_PATH = 'E:/code/2026/GPM/publish' //IIS上的物理路径

APP_POOL_NAME = 'API' // 必须和 IIS 应用池一致

}

stages {

stage('Checkout') {

steps {

checkout scm

}

}

stage('Publish VOL.WebApi') {

steps {

// ✅ 直接发布单个项目,无需先 restore/build

bat 'dotnet publish VOL.WebApi/VOL.WebApi.csproj -c Release -o publish --no-self-contained'

}

}

stage('Deploy to Local IIS') {

steps {

bat 'if exist "%DEPLOY_PATH%" rmdir /s /q "%DEPLOY_PATH%"'

bat 'mkdir "%DEPLOY_PATH%"'

bat 'robocopy "publish" "E:/code/2026/GPM/publish" /MIR /NFL /NDL || exit 0'

bat "powershell -Command \"Restart-WebAppPool -Name \\\"${APP_POOL_NAME}\\\"\""

}

}

}

post {

success {

echo "✅ 部署成功!访问 http://localhost:8081"

}

failure {

echo "❌ 部署失败,请检查日志"

}

}

}

注意:因为这是本地部署配置,若Jenkins和Git在不同服务器,配置要修改,可百度或AI查

🔄 第五步:在 Jenkins 中创建 Pipeline 任务

  1. 点击 New Item
  2. 输入名称:MyApp-CI-CD
  3. 选择 Pipeline → 点击 OK
  4. 在 Pipeline 区域:
    • Definition: Pipeline script from SCM
    • SCM: Git
      • Repository URL: http://gitblit.local/r/myapp.git
      • Credentials: 选择 git-creds
      • Branches to build: */main
      • Script Path: Jenkinsfile
  5. 点击 Save

🚀 第六步:首次手动构建 & 验证

  1. 进入任务页面 → 点击 Build Now
  2. 查看 Console Output ,观察是否:
    • 成功拉取代码
    • dotnet build/publish 成功
    • 成功停止/启动远程服务
    • 文件复制无错误
相关推荐
YoungStudyAI5 小时前
QA的下一个自动化阶段,可能不是再写更多脚本,而是设计测试Agent
运维·自动化
分布式存储与RustFS6 小时前
纠删码到底吃掉了多少容量:EC:4、EC:8 的利用率与容错怎么算
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
遇见小修修6 小时前
3步解决打印机0x00000709报错 ,广州深圳程序员可自行排查
运维·打印机·维修·打印机报错·打印机运维·打印机故障自查
Huangjin007_8 小时前
【Linux 系统篇(二十五)】文件(二) 系统文件I/O详解
linux·运维·服务器
微小冷8 小时前
Mermaid画甘特图
运维·markdown·甘特图·mermaid·时间图
LBL12209 小时前
内网容器部署FTP日志监控服务
运维·服务器·容器
志栋智能9 小时前
超自动化巡检:驱动持续改进的运维飞轮
运维·自动化
海宇大数据9 小时前
零信任架构实战:基于海宇学历核验版构建自动化风控审查网关
运维·人工智能·架构·自动化
NailiConveyor10 小时前
输送机系统与WMS仓储管理系统集成的5个关键技术点
大数据·运维·自动化·制造·业界资讯
本人手速666+10 小时前
企微开发API如何设计客户冻结状态?WeComApi 在删除、投诉和异常客户场景中的自动化边界
运维·分布式·自动化·企业微信·企微外部群开发·wecomapi·企业微信二次开发