记一次完整的CI持续集成配置过程(.net core+Jenkins+Gitea)

Jenkins大家一定很熟悉。以前我也配过,这次的需求是当后台开发工程师向git server提交代码以后,jenkins服务器自动去抓取,然后编译,发布,我起初觉得这是个很简单的事情,应该半个小时搞定吧。

事实上,不但半个小时没搞定,我最后 折腾了三天,经历了38次失败,最终在第39次才完全配置成功。

把经历的过程写下来,供后来者参考,避免踩坑。

一、本次配置环境:

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
图示:

mdev就是我要的分支,在git parameter创建的名字,在下面引用的时候,前面有个$符号

4.Gitea server 配置为:

其中的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拷贝文件报错等各个错误。好在一个一个都填我填平了。
最好配好了,还是挺有成就感 的。

已经到中年,还坚持学习,欢迎大家交流批评指点
原文地址:https://www.cnblogs.com/Wadereye/p/12495656.html