当前位置: 首页 > news >正文

Jenkins自动化部署.NET应用实战:Docker+私有仓库+SSH远程发布

Jenkins自动化部署.NET应用实战:Docker+私有仓库+SSH远程发布

一、场景概述

本文介绍通过Jenkins实现.NET应用的全自动化部署流程,包含以下阶段:
✅ 代码拉取 → ✅ Docker镜像构建 → ✅ 私有仓库推送 → ✅ SSH远程服务器部署

适用场景:企业内部CI/CD流水线、微服务容器化部署、多环境发布


二、环境准备

工具版本要求备注
Jenkins2.346.3+需安装SSH插件/Pipeline插件
Docker20.10.17+支持Buildx
.NET SDK6.0+与项目版本匹配
目标服务器Ubuntu 20.04+需开放SSH端口和Docker权限

三、Jenkins配置详解

1. 创建Item与基础设置

路径新建Item → 输入名称 → 选择Freestyle project
在这里插入图片描述


2. 参数化构建配置

// 日期参数用于镜像标签
dateParameter(name: 'tag',dateFormat: 'yyyyMMddHHmm',defaultValue: '${BUILD_TIMESTAMP,format="yyyyMMddHHmm"}',description: '镜像版本时间戳'
)// 镜像名称参数
stringParameter(name: 'imageName',defaultValue: 'test.api',description: 'Docker镜像名称'
)// 容器端口参数
stringParameter(name: 'port',defaultValue: '9001',description: '服务暴露端口'
)

在这里插入图片描述
在这里插入图片描述


3. 源码管理(Git)

Git配置:- Repository URL: http://your-git-server.com/group/test.api.git- Credentials: [选择已绑定的Git账号凭据]- Branch Specifier: */main

在这里插入图片描述


4. 构建步骤分栏配置

▶ 执行Shell #1 - 生成Docker编排文件
#!/bin/bash
build_dir="build_${BUILD_NUMBER}"
mkdir -p $build_dircat > "$build_dir/docker-compose.yml" <<EOF
version: "3.8"
services:${imageName}:image: your-registry.com/group/${imageName}:${tag}ports:- ${port}:80environment:- ASPNETCORE_ENVIRONMENT=Productionvolumes:- ./appsettings.Production.json:/app/appsettings.json
EOF

第二种

#!/bin/bash#创建编译所需要的文件夹
build_dir="build"if [ ! -d "$build_dir" ]; thenmkdir $build_dir
fidockerFileName="$build_dir/Dockerfile"#创建自定义docker-compose.yml文件
dockerCompose="$build_dir/docker-compose-n.yml"
touch "$dockerCompose"
cat "$dockerCompose"echo 'version: "3.4"' >>$dockerCompose
echo 'services:' >>$dockerCompose
echo "  $imageName:" >>$dockerCompose
echo "    image: registry.cn-hangzhou.aliyuncs.com/mokk/$imageName:$tag" >>$dockerCompose
echo "    container_name: $imageName" >>$dockerCompose
echo '    ports:' >>$dockerCompose
echo "      - $port:80" >>$dockerCompose
echo '    restart: always'   >>$dockerCompose
echo '    environment:' >>$dockerCompose
echo '      - TZ=Asia/Shanghai' >>$dockerCompose
echo '      - ASPNETCORE_URLS=http://+:80;' >>$dockerCompose
echo '    volumes:'>>$dockerCompose
echo '      - ./data:/app/data'   >>$dockerCompose
echo '      - ./appsettings.json:/app/appsettings.json'   >>$dockerCompose

在这里插入图片描述

▶ 执行Shell #2 - 构建推送镜像
#!/bin/bash
# 使用多阶段构建加速
docker buildx build \-f "./src/Test.API/Dockerfile" \-t your-registry.com/group/${imageName}:${tag} \--push .# 清理本地缓存
docker system prune -f

第二种

docker build -f './src/Test.API/Dockerfile' -t $imageName:$tag .
docker login --username=test@qq.com--password=123456 registry.cn-hangzhou.aliyuncs.com
docker tag $imageName:$tag registry.cn-hangzhou.aliyuncs.com/mokk/$imageName:$tag
docker push registry.cn-hangzhou.aliyuncs.com/mokk/$imageName:$tag

在这里插入图片描述

▶ SSH远程部署

传输配置

  • Source files: build_${BUILD_NUMBER}/*
  • Remove prefix: build_${BUILD_NUMBER}/
  • Remote directory: /opt/apps/${imageName}

远程命令

cd /opt/apps/${imageName}
docker compose down --timeout 60
docker compose up -d --remove-orphans
sleep 10
curl -s http://localhost:${port}/healthcheck || exit 1

第二种

cd /data/apps/mokk.dbs.identity.serverdocker login --username=test@qq.com --password=123456 registry.cn-hangzhou.aliyuncs.comdocker compose -f  docker-compose.yml  down
mv docker-compose-n.yml docker-compose.yml
docker compose -f  docker-compose.yml  up  -dexit

在这里插入图片描述


四、流程图解

Remote Server
Jenkins Server
SSH传输文件
停止旧容器
启动新容器
健康检查
拉取代码
触发构建
生成docker-compose.yml
构建Docker镜像
推送至私有仓库

五、常见问题排查

  1. 镜像推送失败

    • 检查docker login凭证权限
    • 确认仓库路径是否存在(需提前创建)
  2. SSH连接超时

    # 测试连接:
    ssh -v -i /path/to/key user@server "docker info"
    
  3. 容器启动报错

    # 查看日志:
    docker logs -f test.api
    

六、优化建议

  1. 安全增强

    • 使用Vault管理密钥
    • 限制SSH用户的sudo权限
  2. 性能提升

    # 并行构建示例:
    docker buildx build --platform linux/amd64,linux/arm64 --push .
    

附录

  • Jenkins官方文档
  • Docker多阶段构建指南

版权声明:本文配置模板可自由使用,请注明技术来源。实际部署时需替换占位符为真实值。


图片区

文中所有图片均为实际截图:

  1. Jenkins参数配置界面
  2. Git仓库设置页面
  3. 构建成功后的控制台输出

如需更详细的配图说明,后续我可补充各环节的动画演示GIF。

补充:SSH 远程链接设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上为本文全部内容,这些设置好基本可以完成简单的jenkins自动化部署,有什么问题可以在评论区留言!

写在最后:
恭喜!您已解锁「Jenkins流水线魔法师」初级成就 🎉
如果这篇指南帮你:
✅ 今天下班早了1小时 → 不妨点个赞
✅ 明天不用凌晨修部署 → 考虑打个赏
✅ 下个月涨薪了 → 记得回来还愿

http://www.dtcms.com/a/287107.html

相关文章:

  • mysql常用总结
  • EMC杂谈-001-基础知识
  • 【面试八股文】软件测试面试题汇总
  • [黑马头条]-项目整合对象存储服务MinIO
  • 百度网盘TV版1.21.0 |支持倍速播放,大屏云看片
  • CS231n-2017 Lecture2图像分类笔记
  • 工业企业与污染库匹配数据库(1998-2014年)
  • Letter Combination of a Phone Number
  • Redis原理之集群
  • windows内核研究(驱动开发之内核编程)
  • Qt控件实战详解:深入掌握输入输出与数据展示
  • Python MCP与Excel增强智能:构建下一代数据处理和自动化解决方案
  • SpringBoot 3.0 挥别 spring.factories,拥抱云原生新纪元
  • 人该怎样活着呢?55
  • 【RK3576】Android 14 驱动开发实战指南
  • uview-ui使用u-icon文字图标展示
  • 报错:升级gcc,centos
  • 数据库第五次作业
  • 云边端协同架构下的智能计算革命
  • 从代码学习深度强化学习 - SAC PyTorch版
  • 消息队列与信号量:System V 进程间通信的基础
  • 【机器学习深度学习】为什么要将模型转换为 GGUF 格式?
  • win10连接鼠标自动关闭触摸板/win10关闭触摸板(笔记本)
  • 路由器的Serial 串口理解
  • 移除debian升级后没用的垃圾
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • AJAX概述
  • Unity 3D碰撞器
  • C语言—深入理解指针(详)
  • Eureka 和 Nacos