zoukankan      html  css  js  c++  java
  • 记一次完整的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拷贝文件报错等各个错误。好在一个一个都填我填平了。
    最好配好了,还是挺有成就感 的。

    已经到中年,还坚持学习,欢迎大家交流批评指点
  • 相关阅读:
    Linux PHP7的openssl扩展安装
    nginx 413 request entity too large解决办法
    html table表格列数太多添加横向滚动条
    Font Awesome-用CSS实现各种小图标icon
    PHP面试专用笔记精简版
    如何理解PHP的单例模式
    HTTP中的header头解析说明
    9.java.lang.ClassCastException
    7.java.lang.IllegalAccessException
    8. java.lang.ArithmeticException
  • 原文地址:https://www.cnblogs.com/Wadereye/p/12495656.html
Copyright © 2011-2022 走看看