前言

网上大多数都是针对主流的Spring Cloud、NET Core的CI/CD方案。但是目前国内绝大部分的公司因为一些历史原因无法简单的把项目从NET Framework切换升级到NET Core,又急切的需要引入CI/CD流程来提高开发体验和效率。因此,本系列博客针对这一问题,旨在解决NET Framework的持续集成难题。

面临的难题

  • 项目结构复杂,且源代码工程结构多为一个解决方案多个项目的模式
  • 构建比较困难,有一些项目的包管理还是以文件路径的引用方式
  • 前后端未完全分离,目前很多公司的NET项目,前端人员和后端人员分开,但是项目源码还是在同一个工程
  • 项目的配置文件在多环境下很难做到自动调整。无论是使用自带的多环境配置文件语法还是对接目前市面上的配置中心都比较困难
  • 部署无法像NET Core一样打包镜像,推送到镜像管理平台,然后再做升级

整体思路

鉴于以上几个难题,对于NET Framework项目的CI/CD搭建方案其实很有限。我选择的方案大体是Gitlab+Jenkins+MSbuild+Rsync

下面介绍一下这几块的分别的分工和作用:

  • GItlab:源代码管理、配置Webhook、工程师提交分支代码触发相应的Jenkins的item任务
  • Jenkins:负责管理构建部署持续集成流水线的每个阶段
  • MSbuild:负责构建NET Framework项目,生成发布文件
  • Rsync:负责把构建好的发布文件部署到指定的服务器上

流程图

这个流程图是适用于前后端在同一项目不同分支的情况,可以根据项目的实际情况做出相应的改变、当然主体流程不会变


那我们接下来就实际的开始搭建

Windows服务器安装Jenkins

一、下载安装包

官方下载地址:Jenkins安装包下载地址

直接选择Windows环境的LTS版本安装包

二、安装JDK

因为Jenkins是需要依赖Java环境的,所以需要先在服务器安装JDK。博主在这里直接把JDK安装包放到这儿,JDK的安装过程和环境变量配置网上很多,我就不在这儿赘述了。

JDK百度网盘链接 提取码:5rpx

三、安装Jenkins

安装比较简单,跟着提示一直下一步就好了

1、配置服务器的账号密码

2、选择Jenkins服务端口

3、配置JDK路径

4、安装完成,Jenkins会自动打开浏览器的对于端口的页面(比如我默认的:8080端口)。这会有点久,可能需要十几分钟,先去下面第四步去配置Jenkins的工作目录然后重启服务,不然重启之后又要初始化

四、配置Jenkins

Jenkins安装好之后,会有一个Jenkins.xml配置文件。我们需要去里面配置一下Jenkins的工作目录

1、打开Jenkins安装路径下的Jenkins.xml配置文件

2、配置工作目录

3、修改完毕,重新启动服务使配置生效

4、这时候Jenkins的管理网页也初始化好了,安装提示在指定路径找到密码文件,复制密码到文本框内,然后点击继续

5、这里点击 选择插件来安装,因为其实有一些插件,我们是不需要的,根据自己的需求来就好了

6、然后就是勾选自己想要的插件来安装的,我下面列举一下必须的但是Jenkins默认没勾选的插件,然后点击安装等插件自动安装完毕,Jenkins就算是安装完成了

  • MSBuild:编译NET Framework项目
  • GitLab:源代码管理,拉取项目代码,配置分支提交Webhook
  • Role-based Authorization Strategy:Jenkins的角色权限管理,分配团队成员不同的权限

第一篇就写这么多,主要是对整体的思路做了一个简单的介绍,然后说明如何安装和配置Jenkins。下一篇我会讲解如何配置Jenkins的item从Gitlab拉取代码。

整个系列我预计大概有8~10篇,主要是我看网上的对这些的讲解都比较零散且粗略,我想讲解的细致一些,避免大家在搭建的过程中趟一些我遇到的坑。

搭建面向NET Framework的CI/CD持续集成环境(一)Windows服务器安装Jenkins的更多相关文章

  1. 搭建面向NET Framework的CI/CD持续集成环境(一)

    前言 网上大多数都是针对主流的Spring Cloud.NET Core的CI/CD方案.但是目前国内绝大部分的公司因为一些历史原因无法简单的把项目从NET Framework切换升级到NET Cor ...

  2. CI/CD持续集成/持续部署 敏捷开发

    敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...

  3. GitLab CI/CD持续集成设置

    GitLab CI/CD持续设置 官方文档地址(https://docs.gitlab.com/ee/ci/README.html) GitLab CI.CD功能非常完善,只需要简单几步,就可以完成项 ...

  4. CI/CD持续集成小结

    一.概念 什么是devops,基于Gitlab从零开始搭建自己的持续集成流水线(Pipeline) https://blog.csdn.net/chengzi_comm/article/details ...

  5. CI/CD持续集成方案

    一,CI/CD流程和持续交付简介 CI(Continuous Integration)持续集成  CD(Continuous Deployment)持续部署  CD(Continuous delive ...

  6. GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

    预期目标 源代码管理 借助GitLab实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...

  7. WTM框架使用技巧之:CI/CD(持续集成/持续部署)

    1. 什么是WTM框架? 一个快速.灵活.社区活跃.最最最最高效的.netcore 后台管理系统.详见 https://wtmdoc.walkingtec.cn/ 欢迎大家付费支持WTMPlus,反哺 ...

  8. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  9. [转] 基于Gitlab CI搭建持续集成环境

    [From] https://blog.csdn.net/wGL3k77y9fR1k61T1aS/article/details/78798577 前言 本文是在12月12号迅雷@赵兵在前端早读课第三 ...

随机推荐

  1. Windows7 提示“无法访问您可能没有权限使用网络资源”的解决办法

    大家经常会碰到,电脑A(Windows7)访问局域网打印机的时候出现提示"无法访问你可能没有权限使用网络资源",导致无法正常使用打印机. 那么出现这种情况该如何解决呢? 解决方法: ...

  2. C# OOP编程

    1:面向对象的概念:什么是类.对象.以及类与对象的关系. 面向对象三大特征: 封装/继承/多台 2:封装性: 用访问修饰符来体现封装性. Public 公共的/ private 私有的/Protect ...

  3. MeteoInfoLab脚本示例:多坐标系

    绘图的时候首先要有坐标系(Axes),可以用axes命令创建,如果没有创建在绘图时会自动创建一个.参数里的position是用来置顶坐标系的图形(figure)中的位置的,通过位置置顶,可以将多个坐标 ...

  4. MeteoInfoLab脚本示例:水汽通量散度计算

    用ncep数据计算水汽通量散度的脚本.需要air, uwnd, vwnd和rhum变量.数据是4维数据,需要固定时间维和高度维,数据中纬度维的数据是反向的,因此读取时需要特殊的设置(::-1).脚本中 ...

  5. Jenkins+pytest+Allure搭建自动化测试

    持续集成(CONTINUOUS INTEGRATION) 在CI环境中,开发人员将会频繁地向主干提交代码.这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证. 持续交付(CONTI ...

  6. Docker安装以及运行第一个HelloWorld

      Docker安装以及运行第一个HelloWorld

  7. Ansible之YAML语言

    playbook写yml语句,若干模块发给Ansible,变成一个一个play,多个片段组合起来变成大片. 最终还是要读取主机清单,来确定作用在哪些机器上. YAML语言 YAML是一个可读性高的用来 ...

  8. Linux操作系统的介绍和安装教程(Centos6.4)

    路漫漫其修远兮,吾将上下而求 Linux的简单介绍 Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds开发的,由于自己不满意教学中使用的MINIX操作系统, 所以在1990年底由于个人 ...

  9. 简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据

    文章目录 一.简介 二.原理 三.爬取实战 实例1 实例2 一.简介 一般的爬虫套路无非是发送请求.获取响应.解析网页.提取数据.保存数据等步骤.构造请求主要用到requests库,定位提取数据用的比 ...

  10. golang开发:http请求redirect的问题

    这两天在开发项目的时候遇到了一个问题,请求了一个URL,它会302到另一个地址,本意上只是想检查这个URL是否会做3XX的redirect跳转,结果每次reqeust都会返回最后一跳的结果.后来就看了 ...