在引入自动化部署工具的时候,对比了jenkins和gitlab CI,jenkins有非常丰富的插件,配置起来方便。gitlab CI更倾向于脚本配置,当然jenkins也可以使用pipeline实现全脚本化配置。我们这里主要讲述jenkins的自动化部署。基本组合是jenkins+git+msbuild,实现从代码仓库拉取、编译、打包、部署、自动化测试。(.net core和framework4.6.1可以不依赖msbuild构建)

一、Jenkins概述

Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成(CI)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。通常与版本管理工具、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle、MSBuild。

1、CI/CD是什么

 CI(Continuous integration)是持续集成。持续集成强调开发人员提交了新代码之后,立刻进行构建、测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。 

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。 

2、Jenkins特点:

  • 开源免费;

  • 跨平台,支持所有的平台;

  • master/slave支持分布式的build;

  • web形式的可视化的管理页面;

  • 安装配置超级简单;

  • tips及时快速的帮助;

  • 已有的200多个插件

3、Jenkins的一个工作流程

互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:编码 → 构建 → 集成 → 测试 → 交付 → 部署

二、Jenkins简单安装及配置(Windows环境)

Windows平台下,一般安装方法有2种:安装程序exe安装和war包安装,本文以war包安装为例子


1、安装Java环境

Jenkins是java开发,因此需先安装对应jdk版本,注意版本兼容,因为我要下载Jenkins2.226版本,所以我们需要下载Java的版本是8到11,否则不兼容。

 

 下载成功后,双击安装包,一直下一步即可,安装完成之后需要配置环境变量,如下图:

 

系统变量->新建,变量名JAVA_HOME,值对应的是JDK的安装路径。

 

 

 选择名为Path的系统变量,点击编辑,在变量值末尾加上 %JAVA_HOME%\bin

 

 检验是否配置成功:在命令提示符输入:java -version

 

2、Jenkins简单安装

Jenkins下载地址:https://jenkins.io/download/ ,下载war包,命令行安装。我这里下载的是Jenkins2.226版本,相应的Java环境需要安装Java8~java11

 

下载完成后,进入命令行模式,直接定位到jenkins.war所在的目录,然后执行下面的命令:

 

因为jenkins的war包自带jetty服务器,所以启动成功后,直接打开浏览器操作即可。输入http://localhost:8080,点击回车,出现以下画面:

 

 

 耐心等几分钟,出现如下页面

第一次使用jenkins时,为了安全考虑,会生成一串字符口令!进入对应的路径,打开该文件,将对应的字符复制进输入框内,点击继续按钮,等待安装成功。我们先不安装插件,回头自主安装,操作如下:

 

  

 跳过插件安装后,接下来就是创建一个管理员账号了,界面如下:

  

输入用户名root,密码qxh123,点击保存并完成,jenkins就安装成功了

 

3、Jenkins插件安装

Jenkins配置成服务

Jenkins安装成功后,可已经将它设置成Windows服务,不用每次通过命令提示符输入命令启动了。设置成服务的方法如下:

 

 按照提示就可以配置成功了,在Windows服务列表中就可以找到jenkins了

插件下载提速

下载插件太慢了,默认插件下载是从jenkins官网的地址下载,太慢了。将地址替换为以下地址

 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

进入jenkins系统管理,进入插件管理,点击高级,修改升级站点的地址

 

然后重启jenkins服务。然后发现还是慢,该下载失败的还是失败。查看错误信息,发现下载地址仍然是官网地址。所以直接打开jenkins所在目录:

首先找到default.json文件,一般在Jenkins服务update目录下,替换内容:

替换 updates.jenkins-ci.org/download 为 mirrors.tuna.tsinghua.edu.cn/jenkins
替换 updates.jenkins.io/download
 为 mirrors.tuna.tsinghua.edu.cn/jenkins

替换 www.google.com 为 www.baidu.com

然后找到Jenkins/hudson.model.UpdateCenter.xml文件

替换 url 为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

通过以上方法,我这边就可以了,很快,看下效果:

如果还不行,就离线下载jenkins插件http://updates.jenkins-ci.org/download/plugins/,然后采用上传的方式。 

Git插件安装

代码基本都是使用Git管理的,所以下载Git插件。进入“系统管理”->“插件管理”,安装git插件。 

 

Msbuild安装

其实我们可以在jenkins中下载msbuild插件的,但是考虑到不兼容性问题(比如,我们下载的msbuild版本不支持C#8.0语法,我们源代码就没办法构建了,编译经常出错)。所以最彻底的方法就是安装VS,然后在“系统管理”->“全局工具配置”中配置VS工具中的msbuild路径。

jenkins汉化

折腾到现在,突然感觉英文版的还是有点不方便的,虽然能看懂大部分,但是有些细节的地方真没心思去看。

安装插件Localization:Chinese,然后重启jenkins服务即可。效果如下:(哈哈,中英文参半,可以了)

 

 4、jenkins插件配置

进入插件管理-全局工具配置,如下git已经配置好了,就是我们下载的git插件

 

 然后配置MSbuild,我们这里使用VS2019上的MSbuild,避免代码和msbuild的版本不兼容。一般msbuild.exe存在于目录C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin中,配置结果如下:

 

三、使用Jenkins进行代码测试、打包(未完待续)

如下图所示,操作如下:

 

 

下图是构建任务设置界面,可以看到上方的几个选项”General”, “源码管理”, “构建触发器”, “构建”, “构建后操作”。下面逐一介绍。

 

 

General

General是构建任务的一些基本配置。

  • Discard old builds: 设置构建历史的保存策略

    •   log Rotation:日志循环
    •   保持构建的天数:意思就是根据你所填写的天数来保存构建记录
    •   保持构建的最大个数:意思就是有几条构建记录就保存几条
    •   发布包保留天数:例如我们发布的war包等的保存天数
    •   发布包最大保留#个构建 :例如我们发布了几个war包,就保存几静默期:设置一个时间来间隔每次构建的间隔
  • 重试次数:这个和系统设置的一样,拉取源码重试的次数
  • 该项目的上游项目正在构建时阻止该项目构建:用于上游项目有关联的构建策略
  • 该项目的下游项目正在构建时阻止该项目构建:用于下游项目有关联的构建策略

  • 使用自定义的工作空间:使该项目独立于系统的工作空间 

源码管理

源码管理就是配置你代码的存放位置。 

 

 

Repository URL:仓库地址,和平时使用git下载仓库差不多的配置,我使用的是HTTPS的方式

Credentials:凭证。可以使用HTTPS方式的用户名密码,也可以是RSA文件。 但要通过后面的”ADD”按钮添加凭证。

Branches to build:构建的分支。*/master表示master分支,也可以设置为其他分支。

源码浏览器:你所使用的代码仓库管理工具,如github, gitlab.

构建触发器

就是构建任务的触发器。

 

 

触发远程构建(例如,使用脚本): 该选项会提供一个接口,可以用来在代码层面触发构建

Build after other projects are built: 该选项意思是”在其他projects构建后构建”。

Build periodically: 周期性的构建。很好理解,就是每隔一段时间进行构建。如下图的设置,表示每隔30分钟进行一次构建

 

Poll SCM:该选项是配合上面这个选项使用的。当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动。 如下图,十分钟检查一次

 

 

构建环境

构建环境就是构建之前的一些准备工作,如指定构建工具(在这里我使用MSBuild)。

 

 

 

版权声明:本文为qtiger原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qtiger/p/13965443.html