Jenkins大家一定很熟悉。以前我也配过,这次的需求是当后台开发工程师向git server提交代码以后,jenkins服务器自动去抓取,然后编译,发布,我起初觉得这是个很简单的事情,应该半个小时搞定吧。
事实上,不但半个小时没搞定,我最后 折腾了三天,经历了38次失败,最终在第39次才完全配置成功。
2.png把经历的过程写下来,供后来者参考,避免踩坑。
一、本次配置环境:
1.需求:
后端工程师提交代码->Push到Git Server(使用Gitea自已搭建)->经路由器映射触发内网Jenkins服务钩子->Jenkins 通过Git获得代码->编译代码 ->Copy 到Pub目录 ->通过 supervisorctl 重启发布新程序。
2.使用到的工具版本:
Gitea :自建Git代码服务器 部署在www.A.com服务器上
Jenkins 2.2.4.5 :CI 持续集成 部署在内网,通过路由器映射端口到内网,使Gitea获得钩子,触发事件
JenKins操作系统:CentOS 7
Dotnet Core 3.1
3.环境说明
二、配置过程
1.安装jenkins。这个网上教程太多了,就说了
2.在安装插件前,一定要把升级服务器中心配置为清华大学的镜像,不然大多数插件是装不好的,我就是在插件安装这里花了很多时间。
菜单 :
[Manage Jenkins]->插件管理->高级->升级站点:
设置为:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
如果插件装不起,怎么办?我就是反复试,经常出现Time out的情况 。
反复试,终于装起了。
几个必须的插件:
[Generic Webhook Trigger]
这个插件不装,没法触发git push钩子。
[Git Parameter Plug-In]
如果你拉下来的代码分支是master,这个可 以不用管。而我们的是开发环境,git提供合并的代码 分支在dev上,所以一定要装这个插件,实现代码分支切换。话说这个插件我反复尝试了不下20次才装好, 不停的报网络超时啊....
3.插件装好了就是配置了
建项目,网上多教程。
我建的项目是:
This project is parameterized
图示:
4.Gitea server 配置为:
4.png其中的TOKEN值,就是代在jenkins中可以设定的Token
5.最后构建脚本为:
因为有多个nuget包服务器,我查了官方文档,要通过-s指定多个Nuget包管理器
dotnet restore -s LocalPackagPath -s https://api.nuget.org/v3/index.json
开始编译
dotnet build
进入编译后的目录
cd /var/lib/jenkins/workspace/ProjectName/src/ProjectWeb/bin/Debug/netcoreapp3.1
最开始用cp拷贝文件覆盖,一直报错,后来改用这个覆盖,完全没问题了
rsync -av --exclude='pub' --exclude='runtimes' * pub
使用supervisorctl重启服务,supervisorctl的教程网上到处都是,这里就 不提了。
supervisorctl restart all
配完了一看,其实挺简单的,不过这中间发生了太多的异常,包括网络超时、程序包管理无法正常获取影响了编译、cp拷贝文件报错等各个错误。好在一个一个都填我填平了。
最好配好了,还是挺有成就感 的。
网友评论