jenkins

jenkins

代码上线发展史

代码发布上线是每一个 IT 企业必须要面临的,而且不管是对开发或者是运维来说,代 码上线本身就是一个件非常痛苦的事情,很多时候每一次发布都是一次考验。为了提高上线 的效率,代码上线的方式,方法,工具也不断的发展,基本上可以分为以下几个阶段。

没有构建服务器

软件在开发者的机器上通过脚本或者手动构建,源代码保存在代码服务器中,但是开发者经常要修改本地代码,因此每次发布,都需要手动合并代码,再进行手动构建,这个过程费时费力。

晚上进行构建

在这个阶段,团队有构建服务器,自动化的构建在晚上进行。构建过程只是简单的编译代码,没有可靠的和可重复的单元测试。然而,开发人员每天提交代码。如果某个开发人员 提的代码和其他人的代码冲突的话,构建服务器会在第二天通过邮件通知团队。所以又一段 时间构建是处于失败状态的。

晚上进行构建并进行自动化测试

团队对 CI 和自动化测试越来越重视。无论什么时候版本管理系统中的代码改变了都会 触发编译构建过程,团队成员可以看到是代码中的什么改变触发了这个构建。并且,构建脚本会编译应用并且会执行一系列的单元测试或集成测试。除了邮件,构建服务器还可以通过 其他方式通知团队成员,如微信,钉钉通知。

代码质量度量

自动化的代码质量和测试覆盖率的度量手段有助于评价代码质量和测试的有效性。

更加认真的对待测试

CI和测试紧密相关,如今测试驱动开发被广泛的使用,是的对自动化的构建更加有信心。应用不仅仅是简单的编译和测试,而是如果测试成功会被自动的部署到一个应用服务器,以此进行更多的测试工作与性能测试。

验收测试与自动化部署

验收测试驱动的开发被使用,使得我们能够了解项目的状态。这些自动化的测试使用行 为驱动的开发和测试驱动的开发工具来作为交流和文档工具,发布非开发人员也能读懂的测 试结果报告。由于测试在开发的早起就已经被自动化的执行了,所以我们能更加清楚地了解 到什么已经做了,什么还没有做。每当代码改变或晚上,应用被自动化地部署到测试环境中, 以供 QA 团队测试。当测试通过之后,软件的一个版本将被手工部署到生产环境中,团队也可以在出现问题的时候回滚之前的发布记录。

centos7安装jenkins

最小硬件需求:256M 内存、1G 磁盘空间,通常根据需要 Jenkins 服务器至少 1G 内存, 50G+磁盘空间。

软件需求:由于jenkins是使用java语言开发,因此运行需要安装java运行时环境(jdk)。

[root@jenkins01 learn_jenkins]# pwd
/learn_jenkins

[root@jenkins01 learn_jenkins]# ls
gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
java-demo.tar.gz
jdk-8u121-linux-x64.rpm
jenkins-2.99-1.1.noarch.rpm
nexus-3.13.0-01-unix.tar.gz
plugins.tar.gz

配置jdk环境

可以通过清华镜像站下载jenkins安装包,以及jdk环境可以通过yum直接安装,也可以下载好rpm包安装

[root@jenkins01 learn_jenkins]# rpm -ivh jdk-8u121-linux-x64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_121-2000:1.8.0_121-fcs  ################################# [100%]
Unpacking JAR files...
	tools.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...

[root@jenkins01 learn_jenkins]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

安装jenkins

安装方式有很多,这里超哥用rpm安装

[root@jenkins01 learn_jenkins]# rpm -ivh jenkins-2.99-1.1.noarch.rpm 
warning: jenkins-2.99-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:jenkins-2.99-1.1                 ################################# [100%]

# 检查jenkins版本
[root@jenkins01 learn_jenkins]# java -jar /usr/lib/jenkins/jenkins.war --version
2.99

启动jenkins

[root@jenkins01 learn_jenkins]# systemctl start jenkins 
[root@jenkins01 learn_jenkins]# systemctl status jenkins.service 
[root@jenkins01 learn_jenkins]# netstat -tunlp |grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      45205/java          

# 注意关闭防火墙
iptables -F

jenkins配置文件

学习jenkins首先要明白一点,那就是jenkins一切皆文件,jenkins没有数据库,所有的数据都是以文件的形式存在,所以我们要了解jenkins的主要目录和文件。

[root@jenkins01 learn_jenkins]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins


jenkins加载插件很多,非常吃内存,且所有操作都是io操作,需要系统IO速度较快,需要机器配置较高
jenkins配置文件:/etc/sysconfig/jenkins
jenkins核心目录:/var/lib/jenkins
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件
/var/lib/jenkins/secrets/initialAdminPassword 存放初始密码
/var/lib/jenkins/plugins    插件目录

jenkins初始化

jenkins首次启动可能会出现页面访问一直提示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3asqvNsK-1678231218076)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326114330567.png)]

访问  192.168.178.130:8080  jenkins站点

一直显示"Please wait while Jenkins is getting ready to work ..." 无法进入

进行如下修改

[root@jenkins01 ~]# cp hudson.model.UpdateCenter.xml hudson.model.UpdateCenter.xml.bak

# 修改如下配置
[root@jenkins01 ~]# cat hudson.model.UpdateCenter.xml


  
    default
    http://mirror.xmission.com/jenkins/updates/update-center.json
  



[root@jenkins01 ~]# systemctl reload jenkins
[root@jenkins01 ~]# systemctl restart jenkins

这个过程会比较缓慢

解锁jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LAaF46J-1678231218077)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326111717087.png)]

# 默认账号admin,密码如下
[root@jenkins01 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
23fb70eac3f1415da8559b1d64d98bbb

自定义jenkins插件

这里安装插件由于会非常缓慢,我们可以后期手动安装,直接点击右上角的❎

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3QdZMPz-1678231218078)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326111739187.png)]

此时进入jenkins首页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CfRzg4nf-1678231218078)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326121053474.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LnC3lZjO-1678231218079)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210510100138151.png)]

默认没安装插件,所以页面功能很少

修改jenkins用户密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7MdF1rax-1678231218080)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326171455788.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N0v63ZA5-1678231218080)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326171513829.png)]

默认admin密码太长,可以修改自己记住的
josen888

插件安装

国外jenkins插件安装太难了,请用如下方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hs9xy2oR-1678231218081)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326172057229.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXVHgzNR-1678231218081)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326172813498.png)]

指定jenkins代理下载插件

可以配置下载插件代理地址

也可以去官网、清华源等地址手动下载jenkins插件,再上传

jenkins镜像文件后缀`.hpi`文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qiBSaQWO-1678231218082)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326172847784.png)]

使用清华镜像站下载插件

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

下载.hpi文件,然后在jenkins里面导入上传即可,自动安装,重启生效

修改jenkins默认升级插件源

如图,换为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

点击提交,也就是修改了linux的文件hudson.model.UpdateCenter.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHPNdpVu-1678231218083)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326173740074.png)]

jenkins插件迁移

可以把插件备份的机器,所有的插件目录/var/lib/jenkins/plugins 资料直接打包
解压缩到新插件目录即可,jenkins一切皆文件,可以直接迁移

jenkins没有数据库,一切皆文件,都是写在xml文件里

超哥已经提供了插件压缩包
/opt/ci_cd_rpm/plugins.tar.gz

# 解压缩
[root@jenkins01 ~]# tar -zxvf plugins.tar.gz

# 复制,移动所有插件到当前jenkins的插件目录
[root@jenkins01 plugins]# pwd
/root/plugins
[root@jenkins01 plugins]# mv ./* /var/lib/jenkins/plugins/

# 重启jenkins,查看插件列表
systemctl restart jenkins

# 重启之后,jenkins自动应用所有新插件,且正确应用了

查看插件列表

系统管理 > 系统信息 >  插件

系统管理 > 插件管理 > 已安装

新功能预览

jenkins首页 > 新建Item > 多了很多新功能

Jenkins主目录学习

[root@m01 plugins]# rpm -ql jenkins
/etc/init.d/jenkins                    # 启动目录
/etc/logrotate.d/jenkins        # 日志切割
/etc/sysconfig/jenkins          # jenkins主配置文件
/usr/lib/jenkins                        #jenkins程序文件 jenkins.war,如 直接替换新版jenkins.war包,重启即升级
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins                      # jenkins主目录,如果要备份jenkins所有数据,直接拷贝这个目录即可
/var/log/jenkins

一切皆文件之用户目录

/var/lib/jenkins/users  # 该目录下存放用户信息
如 admin的信息/var/lib/jenkins/users/admin/config.xml ,改密码等等

主配置文件解读

jenkins默认的用户为jenkins,生产环境建议使用jenkins用户,然后使用sudo进行授权,在学习过程中若是想要避免权限问题,可以直接改为root用户。

默认配置参数
[root@m01 plugins]# grep -Ev "^$|^#" /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins"                #jenkins主数据目录,数据备份,也只需要打包该文件夹即可
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins"                                # 启动用户
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"                                         # 启动端口,可以改
JENKINS_LISTEN_ADDRESS=""                          # 监听地址
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

修改jenkins时区

打开jenkins的【系统管理】---> 【脚本命令行】
在命令框中输入一下命令【时间时区设为 亚洲上海】

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2r1n1QQC-1678231218083)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200327165046301.png)]

Jenkins创建job

构建作业是一个持续集成服务器的基本职能,构建的形式多种多样,可以是编译和单元测试,也可能是打包及部署,或者是其他类似的作业。在 Jenkins 中,构建作业很容 易建立,而且根据你的需要你可以安装各种插件,来创建多种形式的构建作业,下面我们先来学习创建自由式构建作业。

自由式的构建作业是最灵活和可配置的选项,并且可以用于任何类型的项目,它的配置 相对简单,其中很多配置在的选项也会用在其他构建作业中。

在 Jenkins 主页面,点击左侧菜单栏的“新建”或者“New job”

freestyle-job介绍

  • 自由风格项目,比较灵活,可以构建任何形式的项目
  • 在页面添加模块配置与参数
  • 每个job仅能实现一个开发功能
  • 无法将配置代码化,不利于Job配置迁移和版本控制
  • 学习相对简单

Jenkins创建freestyle项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GliRzjg-1678231218084)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200709173420208.png)]

1.输入任务名字,job名字,定义一个有意义的名字,根据业务命名
注意,一旦确定job名字,就不要轻易修改了,jenkins一切皆文件
job名字已经被写入各种配置了,生成一系列的文件,文件夹

[root@m01 jobs]# pwd
/var/lib/jenkins/jobs
[root@m01 jobs]# ls
My-freestyle-job



如果你修改了文件夹,这里会生成一个新的job文件夹配置,数据目录就会紊乱出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZR4Rgurg-1678231218084)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513092300504.png)]

勾选“丢弃旧的构建”,这是我们必须提前考虑的重要方面,就是我们如何处理构建历史,构建作业会消耗大理的磁盘空间,尤其是你存储的构建产物(比如执行 java 构建时会 生成的 JAR、WAR 等)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AOIZoeRE-1678231218085)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200709174146102.png)]

选项允许你限制在构建历史记录的作业数。你可以告诉 Jenkins 只保留最近的几次构 建,或者只保留指定数量的构建,此外,Jenkins 永远不会删除最后一个稳定和成功的构建。 具体数据的指定要根据你项目的实际情况而定,我一般设置为 5、5

丢弃旧的构建
如果项目特别多,文件大,会造成jenkins数据目录过大,特别是编译类型的项目
    保持构建5天
    保留构建最大个数5个 

构建触发器
    手动构建
    定义触发器


构建环境

构建
    执行一系列的操作
    Execute shell
        执行linux命令

Execute shell执行命令、脚本

我们通过几个示例来学习具体的配置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GWs3Qhmo-1678231218086)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513092327562.png)]

查看jenkins执行命令,是在哪个目录操作的

保存设置后,回退到job主页面,可以进行job运行。

执行job立即构建

点击立即构建,即可执行job的任务,我们定义的构建动作是,执行shell命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hyvtg4VO-1678231218086)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513092405568.png)]

jenkins-job主页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2p11kFH-1678231218087)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200709180211044.png)]

构建结果日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99MICbJS-1678231218088)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200709180349918.png)]

在上面的控制台输出内容中,我们可以看job执行时的当前工作目录是jenkins主目录+workspaces+job名称定义的目录。

# jenkins执行job的工作目录
/var/lib/jenkins/workspace/chaoge_jenkins_job

# 由于仅仅是执行pwd,没有任何文件生成,若是对代码构建,源代码就是下载到了这里
[root@jenkins01 workspace]# pwd
/var/lib/jenkins/workspace
[root@jenkins01 workspace]# ls
chaoge_jenkins_job

# job目录
[root@jenkins01 chaoge_jenkins_job]# pwd
/var/lib/jenkins/workspace/chaoge_jenkins_job
# job的构建记录 都在这里了,所有构建记录都以文件形式记录下了
[root@jenkins01 chaoge_jenkins_job]# ls
chaoge666.txt

增加一个构建动作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IhZqg1kc-1678231218089)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326223329631.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xhrUDu0j-1678231218090)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326223420825.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CBEzoPSd-1678231218091)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326223420825.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OR5MfNGr-1678231218093)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326223606562.png)]

在jenkisn站点检查工作空间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGqr4a6I-1678231218094)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200326224547980.png)]

例如运维可以使用jenkins的job功能,给其他不懂linux命令的同事,通过一键点击,就能够执行linux命令
例如服务重启等
可以有效的防止不懂linux的技术人员,在服务器上做奇怪的操作

Jenkins连接gitlab获取代码

既然是持续集成,对代码进行构建,我们得获取代码仓库的内容,这里选择我们搭建的gitlab服务器

友情提醒

1.在自己虚拟机做实验,若是gitlab,jenkins运行在一台服务器,内存需要给大一点,该两个服务非常吃内存

[root@lb02 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3725        2229         221          61        1274        1149
Swap:          2047           0        2047

2.jenkins会和gitlab冲突端口,8080,修改jenkins端口来的方便

[root@lb02 ~]# grep 9080 /etc/sysconfig/jenkins
JENKINS_PORT="9080"

重启jenkins
[root@lb02 ~]# systemctl restart jenkins

环境准备

1.服务器准备

192.168.178.130 jenkins01

在jenkins机器上配置好git,生成公私钥发给gitlab

在jenkins-job里做好配置,和凭证,写入

192.168.178.131 learn_gitlab

1.启动gitlab,且检查
[root@learn_gitlab]# gitlab-ctl status

2.启动jenkins,且检查
[root@jenkins01]# systemctl status jenkins
#在jenkins机器上配置好git

2.访问服务

Jenkins

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1oUbePCU-1678231218095)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513175637192.png)]

Gitlab

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C4NKxm8X-1678231218096)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513175625053.png)]

配置jenkins结合gitlab

在gitlab上复制仓库地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1j0HXTDo-1678231218097)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513160923748.png)]

[email protected]:cmdb_dev/learn_gitlab.git

在jenkins上找到job配置页面,下拉倒源码管理,勾选git管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sy8g829J-1678231218098)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200713110238290.png)]

这里提示是该jenkins服务器,git安装有问题,可以做如下操作

[root@jenkins01]# yum install git -y

安装完毕git后,刷新jenkins页面,看到如下结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFKyBDRn-1678231218098)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200713110619886.png)]

这里新的报错是因为key认证失败,是因为我们选择的协议是ssh方式,还得配置ssh认证,我们在学习gitlab的时候,配置过客户端机器的ssh-key,为什么这里还需要认证,我们看下jenkins启动的用户

[root@jenkins01 learn_gitlab]# ps -ef|grep jenkins
jenkins   57007      1  0 May12 ?        00:04:22 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root     113106 112412  0 17:25 pts/0    00:00:00 grep --color=auto jenkins

该jenkins进程是jenkins用户启动的,而我们gitlab配置的ssh-key是root用户连接,还得重新再添加ssh-key

jenkins添加gitlab认证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5WOskoXu-1678231218099)(http://book.luffycity.com/linux-book/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/pic/image-20200713111021726.png)]

先在jenkins服务器上生成ssh-key密钥对
[root@jenkins01 learn_gitlab]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RSQnEbaLTtE8IO/tZGraDx1yMu7s98HvupV3tIQK2fg root@lb02
The key's randomart image is:
+---[RSA 2048]----+
|    . . *++      |
|     o = *       |
|      o = .      |
|     . + ++   .  |
|      B S+ . . ..|
|     + @ oo .....|
|      * o oEo ...|
|     * ..  + . . |
|    ..=o..++o    |
+----[SHA256]-----+
[root@jenkins01 learn_gitlab]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYSkcOaIAdUp/m8gH9/1vVs0Crlv9UPDEp4HdYGS2dpeb0e9UA1l8lOhoZ9uR10I1u2HnALfpQMH48+1C2O/pHmkvmyOXRh1wffTxuosXaNsbRgXZKutUL+plDDoE3wH011bybs42OPdqLrNL8oWiIQ5iliUKBM6+YA2HejSwHB2s02e+mYSCnuRr9SNngNX4f8jLnc91JD+XWxsc+q2VS5/weWpFc0F1Y0NZz8RKr9crZ86ZXkPMC36ukPrsOZxIPXSWjTn27VLO29ks3QavyDPts5V3u25hhZYA5nWNMUKUltKTq4Mp19/RpMHgBEo9Q/Qv1NZcO+1QOZ/fUkwEr root@jenkins01
#复制这段公钥,到gitlab添加SSH秘钥

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9aK0Y4v-1678231218100)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513172557226.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eXl36nxe-1678231218101)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513174026077.png)]

在jenkins机器上查看私钥,并输入其中

[root@jenkins01 learn_gitlab]# cat ~/.ssh/id_rsa

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFrr2Wu2-1678231218102)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513173850242.png)]

#Description一栏应该填写jenkins-ssh-key,应该更加详细

4.此时看不到任何报错了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9axRLbSo-1678231218103)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513174332273.png)]

启动该job,立即构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfhN6DxD-1678231218104)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513181532543.png)]

控制台查看详细日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtnMET11-1678231218105)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513181552851.png)]

查看jenkins的job工作区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yflF383o-1678231218106)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513181806820.png)]

已经是下载完毕了代码
[root@jenkins01 chaoge_jenkins_job]# pwd
/var/lib/jenkins/workspace/chaoge_jenkins_job

#对比发现,已经把gitlab上的cc.txt下载过来了
[root@jenkins01 chaoge_jenkins_job]# ls
cc.txt  chaoge666.txt

获取gitlab的master分支代码

该操作可以用于构建测试环境

1.在master分支推送新的代码记录
[root@jenkins01 chaoge_jenkins_job]# cd /opt
[root@jenkins01 opt]# git clone [email protected]:cmdb_dev/learn_gitlab.git
[root@jenkins01 opt]# cd learn_gitlab/
[root@jenkins01 opt]# git branch
* master

[root@jenkins01 learn_gitlab]# echo "你学会jenkins和gitlab的结合了吗" >jenkins_gitlab.txt
[root@jenkins01 learn_gitlab]# git add .
[root@jenkins01 learn_gitlab]# git commit -m "学习jenkins_gitlab"

# 提送到master分支
[root@jenkins01 learn_gitlab]# git push origin master 
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 339 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:cmdb_dev/learn_gitlab.git
   7964385..956561b  master -> master

查看gitlab代码仓库,master分支内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GNQy1UDM-1678231218107)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513183322622.png)]

回到工作区,发现没有更新

[root@jenkins01 learn_gitlab]# cd /var/lib/jenkins/workspace/chaoge_jenkins_job
[root@jenkins01 chaoge_jenkins_job]# ls
cc.txt  chaoge666.txt

构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bRFVHA20-1678231218107)(C:\Users\JosenWinter\AppData\Roaming\Typora\typora-user-images\image-20210513183614099.png)]

工作区有代码了

[root@jenkins01 chaoge_jenkins_job]# ls
cc.txt  chaoge666.txt  jenkins_gitlab.txt

你可能感兴趣的:(jenkins,运维)