-- asp.Net core web程序在Windows上使用Jenkins实现持续集成,自动发布等(CI,CD,自动监控git仓库变更,自动构建,发布)
【官网】:https://www.jenkins.io
应用场景
每次发布web站点时,手动发布所做的事情主要是备份,生成,发布。而手动做这些循环的事情,不但增加工作量还容易出错。尤其当产品持续迭代的时候,无限重复的步骤就会让人很烦躁并极易出错,大大增加人力和时间成本。Jenkins可以让我们解放双手,去做更有价值的事情。基础资源
jdk-8u261-windows-i586.exe,nuget.exe CLI,MsBuild,Jenkins,git(可选),OpenSSH服务端(可选),.net core sdk3.1,ASP.NET Core 3.1 Runtime (v3.1.5) - Windows Hosting Bundle Installer
使用须知
目标:让 asp.Net core web程序在Windows上使用Jenkins实现持续集成,自动发布等(CI,CD,自动监控git仓库变更,自动构建,发布) 注意项:1)强烈建议对项目类库的依赖,抛弃以前本地依赖的方式,统一使用Nuget . 2)首先我们要把Asp.Netcore发布成基于windows服务的发布方式. 3)每次发布之前先备份(每次发布前备份(把正在运行的文件拷贝到备份文件夹内,然后再开始发布新的版本).
配置步骤
[步骤1:下载适合你的平台版本]
下载地址: https://www.jenkins.io/zh/download/
选择window版本
[步骤2:安装]
直接双击jenkins.msi文件,采用默认设置或自定义安装目录,直到完成。
[步骤3:配置下载镜像]
本步骤是可选项,我本机网络正常,因此没有配置镜像。大家根据情况而定。
安装过程如果发现安装目录发现有hudson.model.UpdateCenter.xml文件。
这个时候到windows服务列表中,停止Jenkins服务。
然后打开hudson.model.UpdateCenter.xml文件。
修改镜像:<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
重新启动Jenkins服务。
打开http://localhost:8080,稍等会跳转到http://localhost:8080/login?from=%2F页面。
注意:期间会不断的去请求这个地址,不用管。据说是因为jenkins的后台访问了国外的地址,但访问不了导致的。
[步骤4:解锁Jenkins]
[步骤5:安装Jenkins插件]
选择自定义Jenkins,如果选择推荐插件,不仅要等很久,而且会有很多装不上。
注: 选择"无",一个插件都不装。
[步骤6:创建管理员]
[步骤7:实例配置]
[步骤8.1:汉化配置]
本步骤是可选项.
点击左侧菜单Manage Jenkins,然后点击右侧Manage Plugins
进去之后,选择Available。
我们输入并搜索:Localization: Chinese (Simplified)
如图:
安装成功后如图:
[步骤8.2:重启让汉化生效]
安装完之后,地址栏输入:http://localhost:8080/restart 重新启动。重启成功后看到的就是汉化之后的界面了。
如果安装失败,可访问:https://plugins.jenkins.io/,同样搜索"Localization: Chinese (Simplified)" 单独下载。
选择最新的就行了。
下载下来后,是个localization-zh-cn.hpi文件。
点击主页的Manage Plugins,进去后选择Advance选项卡。将下载的文件上传上去即可,如下图:
[步骤9.1:安装git插件]
注:如果是svn请自行参考前面汉化步骤适当修改搜索关键词,大体步骤一样。
[步骤9.2:配置git]
1)首先,我们的项目需要已经借助git仓库管理,github,gitlab,gitee (考虑网络和易用性原因,我选择了gitee).
2)需要在本地通过git gui工具生成rsa 公钥私钥对,将公钥填写到git的web管理后台. 同时需要记住产生rsa密钥对时的密码。
3)设置好项目对各个账号的权限,作为开发者还需要确保仓库的权限是公开的还是私有的,避免出现重大安全隐患。
[步骤10:全局配置]
如果Path to Git executable配置为git.exe不行的话,填写安装路径也是可以的。
我的是:C:\Program Files\Git\bin\git.exe
[步骤11:保存]
接下来可以开始创建构建发布任务了,具体请看本文后半部分的快速入门
常见问题
-
8080端口已被其它应用占用,无法使用
【解决方案】可以把占用8080端口的应用停掉;或者修改jenkins安装目录下jenkins.xml文件,将8080换为其它可用端口
快速入门
注: 一个公司或团队,可能有多个项目,因此每个项目可以创建不一样的jenkin任务,采用不同的配置和策略。
[步骤1.1:创建任务]
在主面板(dashboard),点击[New Item],并选择 [Freestyle project]
[步骤1.2:源码仓库(git)管理]
根据提示和自己的需求,填写.
[步骤1.3:构建触发器管理]
勾选:Poll SCM,时间设置成:H/2 * * * *
意思是每2分钟检查git是否有变化,如果有变化就会重新构建和部署。
[步骤1.4:构建(build)与发布(publish)脚本编写]
我们以最简单的发布过程为例,脚本大概如下(先停止站点,构建,发布,恢复站点),脚本大概如下:
F:
cd F:\F\CLBWork\CICD\CICDDemo\cicdtest
dotnet build
dotnet publish -o F:\ftp\webroot\CICDTest
C:\\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:CICDTest
[注1]脚本开发中,脚本步骤顺序,要考虑对线上站点影响最小(比如:构建过程中不需要停止站点,等发布时才需要)。
[注2]还需要考虑步骤失败了是否能恢复,是否需要报警通知运维负责人。
[注3]通常使用cmd还需要确保jenkins服务具备本地操作的权限,以及相关的磁盘目录需要填写你自己的。
[步骤1.5:触发运行]
[注]由于我们上面设置触发器策略是定时检查git仓库是否有变更,因此我们只需在项目中随便修改什么东西,提交远程仓库,即可在等一会看到jenkins自动构建发布的效果。
[步骤1.6:验证查看jenkins自动监控触发,构建,发布的站点]
[步骤1.7:如果失败还可以看下jenkins任务输出日志]