使用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. ...
随机推荐
- 常用user agent
测试user agnet的网站: http://whatsmyuseragent.com/ Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) ...
- js到字符串数组,实现阵列成一个字符串
数组字符串(阵列元件与字符串连接) var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 字符串转数组(根据一个字符串被分成 ...
- .net core 允许跨域
在Startup的ConfigureServices()中添加services.AddCors()在Startup的Configure()中添加app.UseCors(); 保证其在app.UseMv ...
- node 后台管理插件forever
在一台计算机上手动跑Node项目简单,node xx.js就搞定了,想让Node项目后台运行,虽然不能直接用node命令搞定,但是在安装了forever这个包以后,还是很轻松的.不过要是在远程服务器上 ...
- SQL基础 关键字
SQL语言类型 数据定义:create/alter/drop table/trigger/index/function/存储过程/约束/…数据操纵:select/update/insert/delet ...
- passed into methods by value java专题
java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递.因为Primitive类型的值不能改变,所以method不能更改调用方传的primitive 值.因为method更改的是Primi ...
- c#通过datatable导出excel和word
/// <summary> /// 导出datatable到word /// </summary> /// <param name="dg">需 ...
- C语言反汇编入门实例
看<天书夜读>第一章,感觉很亲切,于是自己动手操起VS,建立一个默认的Win32 Console Application,在一个空空的main函数里面F9下一个断点之后,按下F5进入调试, ...
- Linux参数调优
一.系统参数调优 打开文件 /etc/sysctl.conf ############ # 一般服务器调整 # ############ #最大连接数 net.core.somaxconn = 327 ...
- 天气预报API接口
原文:天气预报API接口 一.中央气象台API接口: 1. XML接口 http://flash.weather.com.cn/wmaps/xml/china.xml 这个是全国天气的根节点,列出所有 ...