您当前的位置:首页 > 计算机 > 服务器 > 网络服务

Jenkins安装和持续集成环境配置

时间:12-11来源:作者:点击数:

持续集成流程说明

在这里插入图片描述

1)首先,开发人员每天进行代码提交,提交到Git仓库

2)然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。

3)最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

服务器列表

虚拟机统一采用CentOS7。

在这里插入图片描述

Gitlab代码托管服务器安装

Gitlab简介

在这里插入图片描述

官网:https://about.gitlab.com/

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,

GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,

你总不可能把团队内部的智慧总放在别人的服务器上吧?

简单来说可把GitLab看作个人版的GitHub。

Gitlab安装

  1. 安装相关依赖–postfix
yum -y install policycoreutils openssh-server openssh-clients postfix
在这里插入图片描述

2. 启动ssh服务&设置为开机启动

systemctl enable sshd && sudo systemctl start sshd
在这里插入图片描述
  1. 设置postfix开机自启,并启动,postfix支持gitlab发信功能
systemctl enable postfix
  1. 开放ssh以及http服务,然后重新加载防火墙列表(如果关闭防火墙就不需要做以下配置)
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
  1. 下载gitlab包,并且安装
    在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm

链接:https://pan.baidu.com/s/1OaP_x1DaovJLuc518zurqQ

提取码:yyds

将下载的安装包上传到服务器上进行安装(需要大概1-2分钟):

rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
在这里插入图片描述

6. 修改gitlab配置

从控制台可以发现,/etc/gitlab/gitlab.rb文件我们需要修改gitlab外部访问的url

 vi /etc/gitlab/gitlab.rb

修改gitlab访问地址(当前安装gitlab服务器的ip)和端口默认为80,我们改为82

external_url 'http://192.168.10.11:82'
nginx['listen_port'] = 82
在这里插入图片描述
在这里插入图片描述

7. 重载配置及启动gitlab(大概需要3-4分钟)

gitlab-ctl reconfigure
gitlab-ctl restart

8.把端口添加到防火墙(如果防火墙关闭了,默认不需要执行以下命令)

firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,访问:192.168.10.11:82

在这里插入图片描述

出现以上界面,我们稍微等等

看到以下修改管理员root密码的页面,修改密码后(密码自己决定),然后登录即可,我这里修改为root123456

在这里插入图片描述

登录进入

在这里插入图片描述

Gitlab添加组、创建用户、创建项目

我们使用超管的账号 添加组、创建用户、创建项目

1)创建组

使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们可以在zhgd_group创建一个项目

在这里插入图片描述
在这里插入图片描述

这样的话,我们就在zhgd_group组下创建一个web_demo项目

在这里插入图片描述

接下来我们可以创建一个用户zhngsan,将这个用户分配到这个zhgd_group组下

2)创建用户

创建用户的时候,可以选择Regular或Admin类型。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建完用户后,立即修改密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)将用户添加到组中

选择某个用户组,进行Members管理组的成员

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Gitlab用户在组里面有5种不同权限:

Guest:可以创建issue、发表评论,不能读写版本库 
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限 
Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限 
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
在这里插入图片描述
在这里插入图片描述

4)在用户组中创建项目

以刚才创建的新用户身份登录到Gitlab,然后在用户组中创建新的项目

注意,创建用户然后用户第一次登录之后,Gitlab还是会弹出让此用户修改密码的界面,我们可以不进行修改,输入原始已经设置好的密码

在这里插入图片描述
在这里插入图片描述

源码上传到Gitlab仓库

下面来到IDEA开发工具,我们已经准备好一个简单的Web应用准备到集成部署。我们要把源码上传到Gitlab的项目仓库中。

1)项目结构说明

在这里插入图片描述

我们建立了一个非常简单的web应用,只有一个index.jsp页面,如果部署好,可以访问该页面就成功啦!

2)开启版本控制

在这里插入图片描述
在这里插入图片描述

2)提交代码到本地仓库

先Add到缓存区

在这里插入图片描述

再Commit到本地仓库

在这里插入图片描述
在这里插入图片描述

3)推送到Gitlab项目仓库中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入gitlab的用户名和密码,然后就可以把代码推送到远程仓库啦

在这里插入图片描述
在这里插入图片描述

刷新gitlab项目

在这里插入图片描述

以上的操作我们就将gitLab安装在192.168.10.11的虚拟机上,并且成功的将本地的项目提交到gitLab上

接下来我们在 192.168.10.129的虚拟机上安装持续集成环境jenkins

1)安装JDK

Jenkins需要依赖JDK,所以先安装JDK1.8

安装过程可以参考文章:

https://www.cdsy.xyz/computer/system/linux/231210/cd46767.html

2)获取jenkins安装包

下载页面:https://jenkins.io/zh/download/

安装文件:jenkins-2.190.3-1.1.noarch.rpm

由于jenkins官网访问较慢,提供百度网盘资源

链接:https://pan.baidu.com/s/1Ab-tst8oDoXFU_XkHQkbxQ

提取码:yyds

3)把安装包上传到192.168.10.129服务器的soft目录,进行安装

rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
在这里插入图片描述

4)修改Jenkins配置

vi /etc/syscofig/jenkins

修改内容 账号和默认端口:

JENKINS_USER="root"
JENKINS_PORT="8888"
在这里插入图片描述

5)启动Jenkins

systemctl start jenkins

启动时若提示下述内容,则表示启动失败

Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.

可查看文章:

https://www.cdsy.xyz/computer/servers/ns/231211/cd46829.html

解决方法:

我们按照提示输入命令,进行失败原因查看:

systemctl status jenkins.service
在这里插入图片描述

我们可以看出jenkins没有找到java文件,需要自己把java文件地址复制过去

vi /etc/init.d/jenkins

手动输入对应服务器中的java路径(这个路径是安装jdk的路径,同时 后缀附上/bin/java):

/usr/local/java/jdk1.8.0_171/bin/java
在这里插入图片描述
systemctl daemon-reload

然后重启jenkis

systemctl start jenkins

接下来我们再启动jenkins,就可以成功了。

6)打开浏览器访问

http://192.168.10.129:8888

注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口

在这里插入图片描述

提示我们需要在指定目录下查找 安装jenkins之后的admin的账号密码

在这里插入图片描述

密码就是:

e0701266541149ce88b64d79b5750e25

7)获取并输入admin账户密码

cat /var/lib/jenkins/secrets/initialAdminPassword

8)跳过插件安装

因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9)添加一个管理员账户,并进入Jenkins后台

在这里插入图片描述

用户名密码: wusong/123456

在这里插入图片描述

开始使用Jenkins

在这里插入图片描述
在这里插入图片描述

持续集成环境(2)-Jenkins插件管理

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。

修改Jenkins插件下载地址

Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:

Jenkins->Manage Jenkins->Manage Plugins,点击Available

在这里插入图片描述
在这里插入图片描述

这样做是为了把Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址

cd /var/lib/jenkins/updates
在这里插入图片描述

default.json文件记录着从官网下载的所有插件地址,但是这些地址都是国外的,下载速度非常慢,我们将这些国外的地址修改为国内的下载地址

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
在这里插入图片描述

最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
在这里插入图片描述

Sumbit后,在浏览器输入: http://192.168.10.129:8888/restart ,重启Jenkins。

下载中文汉化插件

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"

在这里插入图片描述

完成后如下图:

在这里插入图片描述

勾选之后,刷新页面

重启Jenkins后,就看到Jenkins汉化了!(PS:但可能部分菜单汉化会失败)

在这里插入图片描述

持续集成环境(3)-Jenkins用户权限管理

我们可以利用Role-based Authorization Strategy 插件来管理Jenkins用户权限

安装Role-based Authorization Strategy插件,在安装此插件之前,建议将Jenkins更新到最新版本,否则安装Role-based Authorization Strategy插件可能会失败

在这里插入图片描述
在这里插入图片描述

开启权限全局安全配置

在这里插入图片描述

授权策略切换为"Role-Based Strategy",保存

在这里插入图片描述

创建角色

在系统管理页面进入 Manage and Assign Roles

在这里插入图片描述

点击"Manage Roles"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Item roles(项目角色):针对某个或者某些项目的角色

Node roles(奴隶角色):节点相关的权限

我们添加以下三个角色:

baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。
注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission

role1:该角色为项目角色。使用正则表达式绑定"itcast.*",意思是角色role1可以访问操作itcast开头的项目。

role2:该角色也为项目角色。绑定"itheima.*",意思是角色role2可以访问操作itheima开头的项目。

创建baseRole全局角色

在这里插入图片描述

创建role1和role2两个项目角色

在这里插入图片描述

保存。

创建用户

在系统管理页面进入 Manage Users

在这里插入图片描述

分别创建两个用户:jack和eric,他们的密码都是123456

在这里插入图片描述
在这里插入图片描述

给用户分配角色

以上创建的两个用户是没有任何角色的,也就是说没有任何权限,我们使用账号登录jenkins之后,页面是没有任何的资源可以访问的。

在这里插入图片描述

系统管理页面进入Manage and Assign Roles,点击Assign Roles

绑定规则如下:

eric用户分别绑定baseRole和role1角色
jack用户分别绑定baseRole和role2角色
在这里插入图片描述

保存。

创建项目测试权限

以wusong管理员账户创建两个项目,分别为itcast01和itheima01

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果为:
  eric用户登录,只能看到itcast01项目
  jack用户登录,只能看到itheima01项目
在这里插入图片描述
在这里插入图片描述

持续集成环境(4)-Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

在这里插入图片描述

安装插件后,多了"凭证"菜单,在这里管理所有凭证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以添加的凭证有5种:

在这里插入图片描述
Username with password:用户名和密码

SSH Username with private key: 使用SSH用户和密钥

Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。

Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token

Certificate:通过上传证书文件的方式

常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)

接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。

安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

Git插件安装,安装完成之后建议重启Jenkins:

在这里插入图片描述
在这里插入图片描述

CentOS7上安装Git工具:

安装
yum install git -y

安装后查看版本
git --version
在这里插入图片描述

用户密码类型

1)创建凭证

Jenkins->凭证->系统->全局凭证->添加凭证

在这里插入图片描述

选择"Username with password",输入Gitlab的用户名和密码,点击"确定"。

在这里插入图片描述

2)测试凭证是否可用

选择之前创建的itcast01项目

在这里插入图片描述
在这里插入图片描述

找到"源码管理"->“Git”,在Repository URL复制Gitlab中的项目URL

在这里插入图片描述
在这里插入图片描述

这时会报错说无法连接仓库!在Credentials选择刚刚添加的凭证就不报错啦

在这里插入图片描述

保存配置后,点击构建”Build Now“ 开始构建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

在这里插入图片描述
在这里插入图片描述

SSH密钥类型

SSH免密登录示意图

在这里插入图片描述

1)使用root用户生成公钥和私钥

ssh-keygen -t rsa

在/root/.ssh/目录保存了公钥和使用

在这里插入图片描述

id_rsa:私钥文件

id_rsa.pub:公钥文件

2)把生成的公钥放在Gitlab中

以root账户登录->点击头像->Settings->SSH Keys

复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"

在这里插入图片描述
在这里插入图片描述

3)在Jenkins中添加凭证,配置私钥

在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来

在这里插入图片描述
在这里插入图片描述

4)测试凭证是否可用

新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!

在这里插入图片描述

持续集成环境(5)-Maven安装和配置

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。

安装Maven

先上传Maven软件到192.168.10.129服务器上的root/soft目录下

链接:https://pan.baidu.com/s/1zW2BISo1_PAb4NUmlxkIqg

提取码:yyds

解压到/usr/local/

tar -xzf apache-maven-3.6.2-bin.tar.gz -C /usr/local/
在这里插入图片描述

配置环境变量

vi /etc/profile
在这里插入图片描述
//jdk环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
//$PATH  指的是以前配置的命令
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/lib:$MAVEN_HOME/bin
//maven环境变量
export MAVEN_HOME=/usr/local/apache-maven-3.6.2

配置生效

source /etc/profile 

查找Maven版本

mvn -v 
在这里插入图片描述

全局工具配置关联JDK和Maven

Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:

在这里插入图片描述

Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:

在这里插入图片描述

添加Jenkins全局变量

Manage Jenkins->Configure System->Global Properties ,添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA

为了让Jenkins感知到jdk和maven的命令

在这里插入图片描述
在这里插入图片描述

修改Maven的settings.xml

创建本地仓库目录

mkdir /root/repo

修改Maven的settings.xml

vi /usr/local/apache-maven-3.6.2/conf/settings.xml

本地仓库改为:/root/repo/

在这里插入图片描述

添加阿里云私服地址:

   <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
在这里插入图片描述

测试Maven是否配置成功

之前我们只是在jenkins上完成从gitLab上拉取代码,并且从控制台日志上看到代码成功拉取到服务器上,接下来我们配置maven对拉取的代码进行编译打包

使用之前的test02测试项目,修改配置

在这里插入图片描述

构建->增加构建步骤->Execute Shell

在这里插入图片描述

输入

mvn clean package
在这里插入图片描述

再次构建,如果可以把项目打成war包,代表maven环境配置成功啦!

在这里插入图片描述
在这里插入图片描述

可以看到本地仓库内保存了从中央仓库下载的依赖

在这里插入图片描述
在这里插入图片描述

持续集成环境(6)-Tomcat安装和配置

安装Tomcat8.5

把Tomcat压缩包上传到192.168.10.102服务器

在这里插入图片描述

解压到//usr/local目录下

tar -xzvf apache-tomcat-8.5.47.tar.gz -C /usr/local

启动tomcat(必须依赖jdk环境)

/usr/local/apache-tomcat-8.5.47/bin/startup.sh

注意:服务器已经关闭了防火墙,所以可以直接访问Tomcat啦

地址为:

http://192.168.10.102:8080

在这里插入图片描述

由于Jenkins和Tomcat所在不同的服务器上,所以要Jenkins有权限去连接

Tomcat服务器,进行远程传输,所以要求Jenkins使用Tomcat的账号才能实现远程传输及部署

配置Tomcat用户角色权限

默认情况下Tomcat是没有配置用户角色权限的

在这里插入图片描述
在这里插入图片描述

但是,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置,添加用户及权限

vim /usr/local/apache-tomcat-8.5.47/conf/tomcat-users.xml

内容如下:

<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
在这里插入图片描述

用户和密码都是:tomcat

注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置

vim /usr/local/apache-tomcat-8.5.47/webapps/manager/META-INF/context.xml
在这里插入图片描述

重启Tomcat,访问测试

停止

/usr/local/apache-tomcat-8.5.47/bin/shutdown.sh

启动

/usr/local/apache-tomcat-8.5.47/bin/startup.sh

访问: http://192.168.10.102:8080/manager/html ,

输入tomcat和tomcat,看到以下页面代表成功啦

在这里插入图片描述
在这里插入图片描述

从上面可以看到,整个tomcat的webapps目录下的项目,后续的jenkins可以利用tomcat账号来管理webapps目录下的项目,来实现项目的远程发布功能

3、Jenkins构建Maven项目

Jenkins项目构建类型(1)-Jenkins构建的项目类型介绍

Jenkins中自动构建项目的类型有很多,常用的有以下三种:

自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)

每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度非常高)

Jenkins项目构建类型(2)-自由风格项目构建

下面演示创建一个自由风格项目来完成项目的集成过程:

拉取代码->编译->打包->部署

拉取代码

1)创建项目

在这里插入图片描述

2)配置源码管理,从gitlab拉取代码

在这里插入图片描述

编译打包

配置->构建->添加构建步骤->Executor Shell

在这里插入图片描述
echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"
在这里插入图片描述

应用->保存

构建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部署(将129服务器上的war包远程部署到120服务器上)

把项目部署到远程的Tomcat里面

1)安装 Deploy to container插件

Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现

在这里插入图片描述

2)添加构建后操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)添加Tomcat用户凭证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击"Build Now",开始构建部署过程

在这里插入图片描述

4)部署成功后,访问项目

在这里插入图片描述

点击项目

在这里插入图片描述

演示改动代码后的持续集成

1)IDEA中源码修改并提交到gitlab

在这里插入图片描述

推送到远程gitLab服务器

在这里插入图片描述
在这里插入图片描述

2)在Jenkins中项目重新构建

在这里插入图片描述
在这里插入图片描述

3)访问Tomcat

在这里插入图片描述

Jenkins项目构建类型(3)-Maven项目构建

1)安装Maven Integration插件(如果下载失败,查询下载即可)

在这里插入图片描述

2)创建Maven项目

在这里插入图片描述

3)配置项目

拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同

在这里插入图片描述

之后就是重新构建项目了

Jenkins项目构建类型(4)-Pipeline流水线项目构建(*)

Pipeline简介

1)概念
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

2)使用Pipeline有以下好处(来自翻译自官方文档):
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。 
可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。

3)如何创建 Jenkins Pipeline呢?
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)中直接载入 Jenkinsfile Pipeline 这种方法)。

安装Pipeline插件

Manage Jenkins->Manage Plugins->可选插件 Pipeline(安装失败就重新安装即可)

在这里插入图片描述

安装插件后,创建项目的时候多了“流水线”类型

Pipeline语法快速入门

1)Declarative声明式-Pipeline

创建项目

在这里插入图片描述

流水线->选择HelloWorld模板

在这里插入图片描述

生成内容如下:

在这里插入图片描述
pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}
stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage
stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。
steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。

编写一个简单声明式Pipeline:

pipeline { 
   agent any
   
    stages {
	    stage('拉取代码') {
		    steps {
			       echo '拉取代码' 
				}
			}
		stage('编译构建') {
			steps { 
			       echo '编译构建'
				}
			}
		stage('项目部署') {
		    steps { 
			       echo '项目部署' 
				}
			}
		}
	}
在这里插入图片描述

点击构建,可以看到整个构建过程

在这里插入图片描述
在这里插入图片描述

2)Scripted Pipeline脚本式-Pipeline

创建项目

在这里插入图片描述

这次选择"Scripted Pipeline"

在这里插入图片描述
在这里插入图片描述
Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。
Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念。
Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样。

编写一个简单的脚本式Pipeline

node {
    def mvnHome
    stage('拉取代码') {
      echo '拉取代码'
    }
    stage('编译构建') {
      echo '编译构建'
    }
    stage('项目部署') {
     echo '项目部署'
    }
}

构建结果和声明式一样!

在这里插入图片描述

拉取代码(借助流水线语法)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编译打包

mvn clean package
在这里插入图片描述
在这里插入图片描述

重新构建

在这里插入图片描述

部署

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重新构建访问项目

在这里插入图片描述

Pipeline Script from SCM

刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,同时也没有进行版本控制,建议把Pipeline脚本放在项目中(一起进行版本控制)

1)在项目根目录建立Jenkinsfile文件,把内容复制到该文件中

并将脚本文件提交推送到gitlab上

在这里插入图片描述
在这里插入图片描述

2)在项目中引用该文件

在这里插入图片描述
在这里插入图片描述

重新构建项目测试成功

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门