目录

Jenkins凭据管理

        普通用户密码凭据

        ssH密钥类型

Jenkins 构建Maven项目测试

                Jenkins关联JDK和Maven

tomcat 安装和配置

jenkins构建Maven项目

                自由风格项目构建

总结


Jenkins凭据管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便wenkins可以和这些第三方的应用进行交互。要在venkins使用凭据管理功能,需要安装credentials Binding插件(推荐的插件已默认安装)。

点击右上角用户名->凭据->点击全局->添加凭据

jenkins harbor rancher持续集成 jenkins持续集成教程_ci

 

常用的凭据类型:

Username with password:用户名和密码。

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

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

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

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

为了让 Jenkins支持从Gitlab拉取源码,需要安装Git 插件以及在 linux系统上安装Git 工具。(之前已安装好了)

        普通用户密码凭据

        1)创建凭据 点击用户名下拉选择凭据->Jenkins全局->添加凭据 类型选择“Username with password”,输入Gitlab 的用户名和密码( zhangsan(gitlab的账户和密码)/12345678),描述输入gitlab-auth-password点击"确定"。

        2)测试凭据是否可用

创建一个Freestyle项目:新建Item ->任务名称(test01) Freestyle Project ->确定 源码管理:选择Git,

Repository URL: http://192.168.37.103:85/devops_group/web_demo.git(可从 gitlab使用 Http 克隆),Credentials 下拉选择gitlab-auth-password,点击保存。

        点击 Bulid Now开始构建,查看控制台输出可以看到构建成功,构建后的包会生成在服务器的/var/lib/jenkins/workspace/testo1目录中。

[root@jenkins /var/lib/jenkins]# cd workspace/test01
[root@jenkins /var/lib/jenkins/workspace/test01]# ls
pom.xml  src  web_demo.iml

        ssH密钥类型

1)在 Jenkins服务器上使用root 用户生成免密的公钥和私钥

ssh-keygen -t rsa

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

获取公钥内容

cat /root/.ssh/id_rsa.pub

以root账户登录Gitlab ->点击头像下拉选择设置 ->SSH密钥复制刚才公钥文件的内容到这里,点击添加密钥

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_02

 

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

获取私钥内容

cat /root/.ssh/id rsa

点击用户名下拉选择凭据-> Jenkins 全局->添加凭据 类型选择

“SSH Username with private key",描述输入gitlab-auth-ssh,Username输入生成私钥的用户名 root,Private Key下面选择Enter directly,把刚才生成私钥文件内容全部复制过来 点击"确定”。

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_03

 

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_04

 

4)测试凭据是否可用

创建一个FreeStyle项目:新建Item->任务名称(test02)Freestyle Project->确定 源码管理:选择Git,

Repository URL: git@192.168.37.103:devops_group/web_demo.git可从Gitlab使用ssH 克隆),

Credentials下拉选择gitlab-autH--ssh,点击保存。 尝试构建项目,如果代码可以正常拉取,代表凭据配置成功!

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_05

 

[root@jenkins /var/lib/jenkins/workspace/test02/src/main/webapp]# cat index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>演示项目主页</title>
</head>
<body>
如果看到此页面,代表项目部署成功啦!
</body>
</html>

Jenkins 构建Maven项目测试

在 jenkins 服务器上安装Maven来编译和打包项目

cd /opt
[root@jenkins /opt]# tar -zxf apache-maven-3.6.2-bin.tar.gz
[root@jenkins /opt]# mv apache-maven-3.6.2 /usr/local/maven
[root@jenkins /opt]# cd /usr/local/maven/
[root@jenkins /usr/local/maven]# ls
bin  boot  conf  lib  LICENSE  NOTICE  README.txt
[root@jenkins /usr/local/maven]# cd bin/
[root@jenkins /usr/local/maven/bin]# ls
m2.conf  mvn  mvn.cmd  mvnDebug  mvnDebug.cmd  mvnyjp
[root@jenkins /usr/local/maven/bin]# vim /etc/profile
.....-
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

[root@jenkins /usr/local/maven/bin]# source /etc/profile
[root@jenkins /usr/local/maven/bin]# mvn -v
Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T16:06:16+01:00)
Maven home: /usr/local/maven
Java version: 1.8.0_171, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_171/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"

                Jenkins关联JDK和Maven

Manage Jenkins ->Global Tool configuration 点击新增JDK,别名输入jdk1.8,

取消勾选Install automatically,JAVA_HONE输入/usr/loca1/jdk1.8.0_171

jenkins harbor rancher持续集成 jenkins持续集成教程_jenkins_06

 

点击新增Maven,Name输入maven3,取消勾选 Install automaticaily,MAVEN_HOME驶入/usr/local/maven点击"应用"和"保存"。

jenkins harbor rancher持续集成 jenkins持续集成教程_tomcat_07

 

添加Jenkins全局变量,

让 Jenkins 能够识别JDK和 Maven环境的命令

Manage Jenkins -> Configure system ->全局属性,勾选 Environment variables键值对列表添加:

键JAVA_HOME,值/usr/local/jdk1.8.0_171
键M2_HOME ,值/usr/ local/ maven
键PATH+EXTRA ,值$M2_HOME/bin

jenkins harbor rancher持续集成 jenkins持续集成教程_tomcat_08

 

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_09

 

修改Maven的settings. xml

mkdir / root/repo  #创建本地仓库目录

 <!--本地仓库改为/root/repo-->
 55   <localRepository>/root/repo</localRepository>

<!--添加阿里云私服地址-->
154     <mirror>
155       <id>alimaven</id>
156       <mirrorOf>central</mirrorOf>
157       <name>aliyun maven</name>
158       <url>https://maven.aliyun.com/repository/public</url>
159     </mirror>
160   </mirrors>

#测试Maven是否配置成功

在本地pom clean install一下

[root@jenkins /var/lib/jenkins/workspace/mvn-demo1]# mvn clean
[root@jenkins /var/lib/jenkins/workspace/mvn-demo1]# mvn install

点击项目test02->设置->构建->增加构建步骤->Execute shell输入


mvn clean package               #清空原有的构建元素(插件、依赖包等target文件),


jenkins harbor rancher持续集成 jenkins持续集成教程_运维_10

 

再进行打包 点击保存 再次构建,如果可以把项目打成war包,代表maven环境配置成功。

jenkins harbor rancher持续集成 jenkins持续集成教程_tomcat_11

 

tomcat 安装和配置

另起一台服务器安装tomcat

安装tomcat 9.0.16

[root@localhost web_demo]# cd /opt
[root@localhost opt]# ls
apache-tomcat-9.0.16.tar.gz  rh
jdk-8u171-linux-x64.tar.gz   

[root@localhost opt]# tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
....
export JAVA_HOME=/usr/local/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH


source /etc/profile
[root@localhost opt]# tar zxvf apache-tomcat-9.0.16.tar.gz 
[root@localhost opt]# mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh  ##开启tomcat

配置tomcat 用户角色权限

        默认情况下Tomcat是没有配置用户角色权限的 验证方法:可浏览器访问http://192.168.37.108:8080,点击Managing Tomcat下 的manager webapp ,发现返回403页面。 但是后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户进行远程部署,所以修改tomcat以下配置,添加用户及权限

[root@localhost opt]# vim /usr/local/tomcat/conf/tomcat-users.xml

 43 --> ##添加tomcat 用户角色权限,指定用户密码都是tomcat,并授予权限
 44   <role rolename="tomcat"/>
 45   <role rolename="role1"/>
 46   <role rolename="manager-script"/>
 47   <role rolename="manager-gui"/>
 48   <role rolename="manager-status"/>
 49   <role rolename="admin-gui"/>
 50   <role rolename="admin-script"/> 51   <user username="tomcat" password="tomcat" roles="manager-gui,ma    nager-script,tomcat,admin-gui,admin-script"/>
 52 </tomcat-users>




[root@localhost opt]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 

19 <!--  ##注释掉value 配置
 20   <Valve className="org.apache.catalina.valves.RemoteAddrValve"
 21          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
 22 -->

重启tomcat

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

再次访问:http://192.168.37.108:8080/mananger/html ,输入账号密码tomcat 即可登陆成功

jenkins构建Maven项目

自由风格软件项目(Freestyle Project )

可以构建很多不同语言的项目,Jenkins 默认提供的构建类型

Maven项目(Maven Project)

专门针对java语言的Maven项目来进行构建,在构建Maven项目会比较方便

流水线项目(Pipeline Project)

使用代码的形式编写构建过程,灵活度非常高 每种类型的构建其实都可以完成---样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择

                自由风格项目构建

项目的集成过程:拉取代码 -> 编译 -> 打包 -> 部署

拉取代码

新建item ->任务名称(web_ demo_ freestyle) FreeStyle Project ->确定

源码管理:选择Git, Repository URL: git@192.168.18.96:devops_group/web_demo.git Credentials" 下拉选择gitlab-auth-ssh, 点击保存 点击 Build Now, 尝试构建项目

编译打包

配置->构建->添加构建步骤-> Execute Shell, 输入以下命令. echo"开始编译和打包” mvn clean package echo "编译和打包结束" 点击Build Now, 尝试构建项目

部署项目

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

1)安装Deploy to container插件

Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container 插件实现: Manage Jenkins ->管理插件-可选插件->搜索Deploy to container 插件选中直接安装即可

2)添加构建后操作

配置->构建后操作->增加构建后操作步骤-> Deploy war/ear to a container WAR/EAR files 输入target/*.war Containers -> Add Container -> Tomcat 9.x Remote -> Credentials, 点击添加-> Jenkins 用户名输入tomcat, 密码输入tomcat, 描述输入tomcat-auth-password, 点击添加 Credentials"下 拉选择tomcat-auth-password Tomcat URL输入http://192.168.37.108:8080 点击保存 点击Build Now, 尝试构建项目 3)部署成功后,刷新http://192.168.37.108:8080/manager/html页面,可以发现应用程序中多出一个项目,点击新项目进去访问

jenkins harbor rancher持续集成 jenkins持续集成教程_maven_12

jenkins harbor rancher持续集成 jenkins持续集成教程_jenkins_13

 Maven项目 构建

1)修改源码 并提交到gitlab

cd /root/web_demo
vim src/main/webapp/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>演示项目主页</title>
</head>
<body>
如果看到此页面,代表项目部署成功啦!
<hr/>                        ##添加换行
<a href="/addUser">添加用户</a>  ##添加
</body>
</html>



git add .
git commit -m "添加用户"
git push -u origin master   ##账号/密码:zhangsan/zhangsan@123

2)安装 maven integration 插件

Manage Jenkins ->管理插件-可选插件->搜索Maven Integration 插件选中直接安装即可

3)创建 maven 项目

新建item ->. 任务名称(web_ demo_ maven)构建一 个maven项目 -> 确定 源码管理:选择Git, Repository URL: git@192.168.18.96:devops_group/web_demo.git CredentialsI 下拉选择gitlab-auth-ssh, 点击保存

Build: Root POM输入pom. xml #指定pom. xml文件的路径

Goals and options

输入clean package #输入maven 指令,不用写mvn

构建后操作:增加构建后操作步骤-> Deploy war/ear to a container

WAR/EAR files 输入target/*.war

Containers -> Add Container -> Tomcat 9.x Remote -> Credentials" 下 拉选择tomcat-auth-password

Tomcat URL输入http:/ /192.168.37.108:8080 点击保存 点击Build Now, 尝试构建项目 浏览器访问项目: http://192.168.37.108:8080/web_demo-1.0-SNAPSHOT/

jenkins harbor rancher持续集成 jenkins持续集成教程_tomcat_14

 

总结

        开发人员将代码提交到代码托管服务器gitlab上,在CI工具jenkins服务器上进行相关的配置,源码管理使用Git进行拉取代码。凭据当中添加了Gitlab项目中的用户和密码(或者用ssh密钥对做相关的凭据)在源码管理中添加相关的http地址(或ssh地址),选择对应的凭据。在gitlab中进行拉取代码。构建时直接指定pom.xml的引导配置文件,在后面跟上相关的maven指令clean package 对相应代码进行编译,打包。然后使用工具Deploy war/ear to a container 将打包编译好的war包部署到tomcat服务器上。在整个过程都是在jenkins持续集成的流程上完成的自动化操作。