使用Jenkins部署.Net Core遇到的几个坑
搞过CI/CD的同学一定吃过不少苦头,或者说遇到不少坑,但是对自动化的执着住挡不了前进的步伐,如果你缺少了运维这一块知识,那么你的流水线总是不那么完美,本文记录的是自己躺过的坑,希望对你有所帮助。
一、相关环境和版本
- 服务器:windows2008【历史遗留服务器,建议升级到2012以上,2016支持Windows的容器化技术】
- 源代码管理:git
- .net core版本:net core 2.2
这里最应该注意的是操作系统版本和Jenkins的版本,不同的版本,特别是操作系统操作的shell可能千差万别,你会在网上看到各种命令,所以选择好自己的环境。
安装Jenkins比较简单,这里略过……
二、Jenkins相关配置
Step1.创建一个自由风格的Jenkins项目,这一步比较简单略过(pipeline项目是一项更加挑战,也许运维高手更需要熟悉,这里跳过)
![]()
解决方法:
1.安装git client插件,并重启jenkins
2.确保安装jenkins的服务器同时也安装了git,并在jenkins上配置git的路径,如下图:
![]()
3.成功配置git源码路径
![]()
Step3.构建时候报错:
![]()
从中可以判断,我的邮件还没有配置,所以发送报错……
Jenkins内置邮箱功能:
1.首先配置Jenkins Location
所在路径:Manage Jenkins=》Configure System=>Jenkins Location
![]()
2.配置E-mail Notification如下图所示
![]()
3.测试发送成功
Email插件:Email Extension
插件安装后如下图所示:
![]()
1.请指定项目或解决方案文件。当前工作目录中未包含项目或解决方案文件。
![]()
排查:切换到服务器cmd下进行restore后发现,原来是nuget作怪,因为服务器无法找到部署在本地服务器的nuget包
![]()
试着解决:试着把nuget包发布到官网。具体如何发布请跳转
新版本的发布需要增加License.txt,否则无法通过,配置如下:其中Licese是从github上拷贝过来的。如果你发布后发现代码没有生效,请确认你是否在release下进行编译,并且build过?
![]()
解决方法:如下图所示,极其简单,折腾的半天,晕!你甚至dotnet restore和dotnet build都不用写,因为dotnet publish本身包含restore和build
![]()
Unable to delete 'D:\Program Files (x86)\Jenkins\workspace\Stone.Base.API'. Tried 3 times (of a maximum of 3) waiting 0.1 秒 between attempts.
解决方法:关闭配置里的删除功能
6.构建的时候卡住在using GIT_ASKPASS to set credentials
Step 1:開始 -> 命令提示字元 -> 滑鼠右鍵 -> 以系統管理員身分執行
Step 2: 找出Jenkins Server 的Git 布置位置,可以從自己的Jenkins 錯誤中知道位置在哪裡,以下是第一張圖顯示的Git
Step3: 將命令提示字元(管理者權限) 移動到該位置,輸入cd C:\Program Files\Git\bin 移動到該目錄
Step 4: 輸入 git config --system --unset credential.helper ,按下Enter
Step 5: 再重新建置Jenkins Job 就可以正常運行了
现象:无法将“obj\Debug\netcoreapp2.2\Stone.Base.API.dll”复制到“E:\Jacky\WebAPI\Base.API\Stone.Base.API.dll”
![]()
原因:该站点正在运行,dll被占用,无法进行替换覆盖
解决方法:
目前暂时还没有找到方法,后面再做补充……
![]()
原因:该站点正在运行,无法进行替换覆盖
解决方法:把Delete workspace before build starts选项勾去掉,如下图:
![]()
三、全自动发布自家类库到Nuget官网或自家服务器
这里的发布改进了以往的手工发布。从代码上传那一刻开始,jenkins自动到git抓取代码,自动编译打包,然后上传到nuget服务器。
jenkins配置如下:这里有很多坑,特别是linux和windows很不一样,同学们要留意。配置其实不麻烦,所有的jenkins编译都可以在系统内部自行跑一遍,如果系统能跑通,jenkins绝对没有问题。具体配置如下图所示:
![]()
dotnet build "D:\Program Files (x86)\Jenkins\workspace\Stone.Util\UtilLib\Stone.Util" -c Release md publish\nuget
md publish\archives dotnet pack "D:\Program Files (x86)\Jenkins\workspace\Stone.Util\UtilLib\Stone.Util" -c Release -o publish\nuget dotnet nuget push "D:\Program Files (x86)\Jenkins\workspace\Stone.Util\UtilLib\Stone.Util\publish\nuget\*.nupkg" -k {自己key} -s https://api.nuget.org/v3/index.json move "D:\Program Files (x86)\Jenkins\workspace\Stone.Util\UtilLib\Stone.Util\publish\nuget\*" "D:\Program Files (x86)\Jenkins\workspace\Stone.Util\UtilLib\Stone.Util\publish\archiv
参考文献:
四、Jenkins常用插件
- Green Balls
该插件让你的感官有了更好的提升,客官请看:
![]()
![]()
非常棒的构建看板,把团队信息透明度提升一个档次,再也不用听到前端开发在问:“有人在构建吗?”,客官请看:
![]()
五、总结
jenkins是如此强大,以至于今年来基本上一统CI、CD的江山,他的内容又是如此之多,足够写一本书,感叹所学只不过它的冰山一角。在pipeline项目中,它也支持python等其他脚本语言的流水化作业,功能非常之强大,期待后面的挖掘和丰富……
使用Jenkins部署.Net Core遇到的几个坑的更多相关文章
- jenkins部署net core初探
一步一步,小心翼翼吖.看了好几个博客,摸索了两天了,才搭建成功,不容易,先写篇文章记下来,hhhhhhhhhhhh 相关环境配置 服务器:centos7 源代码管理器:git 技术选型:net cor ...
- Jenkins部署net core小记
作为一个不熟悉linux命令的neter,在centos下玩Jenkins真的是一种折磨啊,但是痛并快乐着,最后还是把demo部署成功!写这篇文章是为了记录一下这次部署的流程,和心得体会. 网上很多资 ...
- 在IIS上部署 .Net Core 3.0 项目踩坑实录
在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安装AspNetCoreModuleV2 添加.配置网站 设置应用程序池 通过VS发布 一.安装并启用IIS: 安装了 ...
- .Net Core 自动化部署:使用jenkins部署到linux docker容器运行
上次我们说到.Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用,这次我们使用jenkins发布我们的.NET Core站点到docker容器中运行,为后面的的 ...
- .Net Core 自动化部署:使用docker版jenkins部署dotnetcore应用
安装docker版jenkins 因为jenkins的docker版本本身没有 dotnetcore的环境,所以我们需要先自己动手制作下包含dotnet环境的jenkins Docker Contai ...
- Jenkins 流水线远程部署 .NET Core/Framework 到 IIS
目录 Windows 安装 Git WebDeploy Windows 从节点 .NET Core 处理 IIS 处理项目 Jenkinsfile .NET Framework 安装环境 .NET F ...
- 【k8s实战一】Jenkins 部署应用到 Kubernetes
[k8s实战一]Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程. 为了简化流程与容易重现文中效果, ...
- Jenkins部署配置简介
前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...
- IIS上部署Net.Core
部署: 1.安装vc_redist.x64vc_redist.x64 2.安装DotNetCore.1.0.0.RC2-WindowsHosting 3.安装DotNetCore.1.0.0-SDK. ...
随机推荐
- ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 数据库上下文 上一章节中我们了解了 Entity Framewo ...
- WPF编游戏系列 之三 物品清单
原文:WPF编游戏系列 之三 物品清单 本篇将介绍如何通过C#自动生成游戏界面,主要演示点击"My Shop"后如何显示所有物品清单.其中数据源来自于Access 2 ...
- XF 按钮控件
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http:/ ...
- c#通过datatable导出excel和word
/// <summary> /// 导出datatable到word /// </summary> /// <param name="dg">需 ...
- seajs教程(一):基本用法
介绍 SeaJS 是一个适用于 Web 浏览器端的模块加载器.使用 SeaJS,可以更好地组织 JavaScript 代码. Sea.js 遵循 CMD 规范,模块化JS代码.依赖的自动加载.配置的简 ...
- delphi文件操作(比较全)
Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用. 但: input:只读.output:只写.用时注意以免引起异常. 文件是由文件名标识的一组数据的集合,文件通常 ...
- 人像美妆---妆容迁移算法研究(Makeup transfer)
原文:人像美妆---妆容迁移算法研究(Makeup transfer) 对于人像美妆算法,现在的美妆相机.玩美彩妆之类的app已经做的比较成熟了,但是具体算法,基本网络上是杳无可查,今天本人介绍一种自 ...
- 将多个文本文件内的数据导入到Datagridview
private BindingList listXSxxInfoList = new BindingList(); openFileDialog1.Multiselect = true;//允许选择多 ...
- 零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II
原文:零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II 本章将教大家如何制作自己的Button,并以玻璃质感Button为实作案例. ? ...
- 【SQL Server】SQL Server占用CPU使用率100%的解决方法
原文:[SQL Server]SQL Server占用CPU使用率100%的解决方法 近日,帮一个客户解决了服务器CPU占用率高达100%的问题. 以前做的一个某污水处理厂自控系统项目,客户反映其自控 ...