使用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. ...
随机推荐
- 对std::string和std::wstring区别的解释,807个赞同,有例子
807down vote string? wstring? std::string is a basic_string templated on a char, and std::wstring on ...
- WPF实现选项卡效果(1)——使用AvalonDock
原文:WPF实现选项卡效果(1)--使用AvalonDock 简介 公司最近一个项目,软件采用WPF开发,需要实现类似于VS的选项卡(或者是浏览器的选项卡)效果.搜寻诸多资料后,发现很多同仁推荐Ava ...
- QRCode二维码生成方案及其在带LOGO型二维码中的应用(2)
原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(2) 续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1) http://blog.csdn.net/johnsu ...
- js 操作样式
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- css3 hover平滑过渡效果,鼠标经过元素,背景渐隐渐现效果
下面实例,演示,鼠标经过时,改变div宽度,平滑改变,带动画 div { width:100px; height:100px; background:blue; transition:width 2s ...
- linux系统中ls命令的用法
普通文件: -,f目录文件: d链接文件(符号链接): L设备文件:字符设备:c块设备:b命名管道: p套接字文件: s linux文件时间戳 时间分为三种类型:创建时间,修改时间:open访问时间: ...
- qmake 时复制文件(自动在编译前做一些操作,且写在.pro文件里)
有时在编译前需要准备一些文件,例如修改了 QtCreator 的编译输出目录: Build & Run > Default build directory,使用 Promote 后需要在 ...
- 超详细SQL SERVER 2016跨网段和局域网发布订阅配置图解和常见问题
原文:超详细SQL SERVER 2016跨网段和局域网发布订阅配置图解和常见问题 转载标明出处:http://blog.csdn.net/u012861467 前方高能,要有点耐心,图片较多,注意在 ...
- 零元学Expression Blend 4 – Chapter 20 以实作案例学习Childwindow
原文:零元学Expression Blend 4 – Chapter 20 以实作案例学习Childwindow 本章将教大家如何运用Blend 4内建的假视窗原件-「ChildWindow」 Chi ...
- Android零基础入门第20节:CheckBox和RadioButton使用大全
原文:Android零基础入门第20节:CheckBox和RadioButton使用大全 本期先来学习Button的两个子控件,无论是单选还是复选,在实际开发中都是使用的较多的控件,相信通过本期的学习 ...