跳转至

02-自动化CICD-Jenkins

Jenkins服务部署

Jenkins 介绍

Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有

Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson

Jenkins官网:https://jenkins.io/

安装部署

安装

安装JDK

Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK。

[root@linux-node1 ~]# yum install -y java-1.8.0

安装jenkins

[root@linux-node1 ~]# cd /etc/yum.repos.d/
[root@linux-node1 yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo
[root@linux-node1 ~]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
[root@linux-node1 ~]# yum install -y jenkins

#本文使用yum进行安装,大家也可以使用编译安装。

配置启动

[root@linux-node1 ~]# systemctl start jenkins

界面配置

新版本的jenkins为了保证安全,在安装之后有一个锁,需要设置密码之后才可以解锁

Jenkins Web访问地址:192.168.56.11:8080

友情提示:jenkins如果跟gitlab在一台服务器需要将jenkins的端口进行修改,需要将jenkins的**8080**修改为**8081**

image-20211101095942559

[root@linux-node1 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
490a2f35a2df49b6b8787ecb27122a3a

复制这个文件下面的ID,否则不可以进行安装。

我们选择推荐安装即可

image-20211101100004135

它会给我们安装一些基础的插件

image-20211101100017964

设置用户名密码:

image-20211101100040228

点击保存并退出

image-20211101100052961

早期jenkins默认是不需要登陆的

image-20211101100105980

新建项目

我们先来介绍一下jenkins基础功能

我们点击新建

image-20211101100123020

这里就是构建一个项目

用户界面

**用户界面:**主要是一些用户的管理

image-20211101100244113可以看到当前登陆用户及用户权限等

任务历史

**任务历史:**可以查看到所有构建过的项目的历史

image-20211101100311742

#之所以叫构建,是因为都是java,因为如果不是java程序就没有构建这个词。但是我们也可以把一些工作称之为构建

系统管理

**系统管理:**存放jenkins所有的配置

image-20211101100338672

视图功能

**My Views:**视图功能,我们可以自己创建一个自己的视图

image-20211101100400405

构建队列

**构建队列:**如果当前有视图任务都会显示在这里

image-20211101100435819

系统管理:-系统设置

设置Jenkins全局设置&路径

image-20211101100451476

image-20211101100500239

插件管理

Jenkins系统管理比较重要的就是插件管理

image-20211101100523882

#因为jenkins所有的东西都需要靠插件来完成,

在线插件

点击已安装可以查看我们的安装

image-20211101100536281

我们想安装什么插件,我们可以选择可选插件

image-20211101100546887

1
我们为了和gitlab和在一起,我们需要安装一个插件

image-20211101100602083

image-20211101100616936

离线插件

查看还可以去jenkins官网下载,然后上传插件

image-20211101100702523

因为很多插件需要翻墙才可以继续下载,jenkins还提供了代理的设置

还是在服务器目录下进行上传插件
目录路径= /var/lib/jenkins/plugins/
这个目录下是我们安装所有的插件

输入日志设置颜色

创建任务如何设置颜色

Jenkins

Jenkins默认输出日志不带任何字体颜色,除了问题不容易排错影响我们看log的时间

1.Jenkins安装
2.安装输出变色插件AnsiColor(在系统管理--->插件管理---->可选插件 搜索AnsiColor下载安装即可)
3.Jenkins开启插件

image-20211101110459669

4.颜色取值范围

颜色 前景色 背景色 黑色 [Black] 30 40 红色 [Red] 31 41 绿色 [Green] 32 42 黄色 [Yellow] 33 43 蓝色 [Blue] 34 44 紫红色 [Magenta] 35 45 青色 [Cyan] 36 46 白色 [White] 37 47 表中的数值对 xterm 有效,其它的终端模拟器可能显示结果有些出入。

使用 echo 示例如下:

echo -e "\033[颜色值m

文本"这句代码中\033[ 作为转义序列的开始,你也可以使用 "\e[" 颜色值处设定前景色值。m 终止转义序列,后面紧跟着就是生效的文本。echo 需要 -e 来开启转义序列。可以用 printf 代替 echo。

具体实现:

echo -e "\033[41;30m红底黑字\033[0m"
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m 黄色字 \033[0m"
echo -e "\033[46;30m 天蓝底黑字 \033[0m"
echo -e "\033[4;31m 下划线红字 \033[0m"
echo -e "\033[5;34m 红字在闪烁 \033[0m"
#需要注意的是闪烁文本在任何一个终端模拟器上都不显示,只在控制台显示

效果图

image-20211101110542410

pipeline语法如何设置颜色

需要安装

ansible插件

AnsiColor插件

        stage('执行剧本'){
            steps{
                ansiColor('xterm') {
                    sh """sh 1.sh"""
                }
                ansiColor('xterm') {
                    ansiblePlaybook colorized: true, extras: '-e "nodes=nodes"', playbook: 'ping.yml'
                }
                ansiColor('xterm') {
                    ansiblePlaybook colorized: true, extras: '-e "nodes=nodes"', playbook: 'ping.yml'
                }
            }
        }

生成定制主题css

效果图

image-20211101110932586

Jenkins默认界面比较丑,视觉容易疲劳,这时候就需要我们更换一个主题。让我们的Jenkins美观一些

首先需要我们打开生成css主题的地址:http://afonsof.com/jenkins-material-theme/

Select your color

选择一个你喜欢的主题颜色。

Choose your company logo

上传你自定义的公司logo。

点击“↓DOWNLOAD TOUR THEME!”

上传logo完成之后,按钮会变更为下载按钮,点击下载到本地。

选择主题颜色

1.选择主题颜色

image-20211101111026021

2.选择公司logo,然后我们点击下载css

image-20211101111059877

Jenkins 配置

3.Jenkins 配置

安装simple theme插件

在主菜单中选择系统管理->管理插件

安装完插件我们点击 系统管理系统设置找到配置Theme的地方

image-20211101111126927

Theme获取css文件有2种方式,第一种我们上传到nginx站点访问,第二种上传到Jenkins目录

第一种可以直接写http://down.i4t.com/jenkins-material-theme.css进行测试

image-20211101111138536

第二种

将之前下载的css文件放置到${Jenkins_HOME}/userContent/material/

没有material文件夹的可以自己创建,其他名字也是可以的。

${Jenkins_HOME}这里是Jenkins默认目录,不修改家目录的情况下在/root/.jenkins

image-20211101111158440

预览演示

我们配置好css地址之后,点击保存

image-20211101111213276

Git+jenkins实现持续集成

创建任务

image-20211101101002855

开始构建

image-20211101101018237

General

image-20211101101031566

源码管理

我们安装的是git插件,还可以安装svn插件

image-20211101101059241

我们将git路径存在这里还需要权限认证,否则会出现error

image-20211101101112590

我们添加一个认证

image-20211101101125248

选择一下认证方式(我们可以在系统管理-->Configure Credentials)里面进行设置

#提示:gitlab有一个key,是我们用来做仓库的key。拥有的权限是read-only

image-20211101101138387

公钥我们需要在服务器上查看。

[root@linux-node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:
5c:55:51:4e:a0:ad:1f:87:e0:96:9b:24:a3:09:68:62 root@linux-node2
The key's randomart image is:
+--[ RSA 2048]----+
|            ..++o|
|           . o o |
|          . o . .|
|     . . . . + . |
|  E o . S o * o .|
| . o   . o = + o |
|        o   o .  |
|                 |
|                 |
+-----------------+


#在192.168.56.11  部署的节点上,生成key

[root@linux-node1 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWEDIIatngRx5NaqU6t+f6FvY2RqYp3V3u5CNJS6xAamGokQ3MnbsTv/V8yKy2TpvNcXsaXmqwQtOVSAO4BzltidMPxBJUQCqKdMRbPqpzo7ZqGCuLcCfHC8M6tSbr1AaHkLbow29YbCMyzCCkjDfRcOez8yHuLj5BSFpKYCjx2wpJxoZ/Z6J8Fslsyu7MaRMvUhBMAF6mqQaC1qZ6K4BMt0IpAuJvoL4dNu9P6KcnG3Wy2zrzoKzkFUi0xpKCmpYo2bq4zRXgAFAndp44j5iMKEavWPeRH0RHTGsfE5vU5/0CI9LCRjtp/3vTaYlBryq5vNXb2abCrJXWws0jwp6L root@linux-node2

image-20211101101207234

测试拉取

[root@linux-node2 ~]# yum install git -y
#如果没有git命令就安装一个git客户端
[root@linux-node1 ~]# git clone git@www.abcdocker.com:web/web-demo.git
Cloning into 'web-demo'...
The authenticity of host 'www.abcdocker.com (192.168.56.11)' can't be established.
ECDSA key fingerprint is b5:74:8f:f1:03:2d:cb:7d:01:28:30:12:34:9c:35:8c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'www.abcdocker.com,192.168.56.11' (ECDSA) to the list of known hosts.
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 10 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10/10), 70.00 KiB | 0 bytes/s, done.

image-20211101101237066

私钥:

[root@linux-node1 ~]# cat .ssh/
id_rsa       id_rsa.pub   known_hosts
[root@linux-node1 ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAoVULn6xsKj+XZMyFOGcFwo0bkrzFRjeZSXby/0BXJJpVaYVj
LEMNOlbD4YHCNTQ4xmyjoeaW468pciVAooOWCCdcbjDmdmACt9knHjMZ1YRG/xuM
DW/VTLBkP1bOAsa1NR3QE5LR/cwwFeEM/NcdjzmCVuQeSwL8GeKMKpyKWe6N8mus
QcRLwiDElbQ9e6CqzagKYbIPnuvCr0XsYjQhGwm0Rhqt2ynr4Ig7FqUhpwmLCQtP
nEq1MbsxDtxugKhiP6kd5znoPdazrKAD9xaRYwSoG/7F4IJMMI5hiKhVya1Bvl5n
M3heJBv61KzW3cvOHuUch6CEt1ypybkY08R8gwIDAQABAoIBAQCXVnTZ6t9oXlDB
EI1jlFi14LJd2tBfhuY3IOrfgFZ+knvOyX53VcrB0ARdtOAeEoezstNomysuF/EU
D1frWu5RZcLx5tM5deT22zAzxxHT1grXYdrl++Ml1k2jkOUde5MeaYH36oErx+/P
hlYtlAk5gmP+6Gx2Ry1/hqGfk0rBAmY/eazqpT5hc1ANuW5dCmdQ5pqHog8CwH+K
YnhKNUaW0VMqzWg9y3cQc8tlQItWUAsjl4+l/rSdOxsC9lTtuJZfMPIlrtLPi6tg
tfjpX+N4zRbSwVblrD6mXOcKmAPbnuvLhyIBnBmDXeAHKCEnOYJ8eEJ6rT+GRjc8
aDvzsLmhAoGBAM0qj6lqdY4ZpHjCd7hJzGIitLBqsqRmHWgs9ymLIFQ+Z8LYI2HQ
1xja/oUfMkAnArcjz+q+gpDinC+oOVAnr4FQWB+lUdlMzzuE6OtYyWYYzjHpdTbO
j4tHgqkOraiuRy1TanjgAJJSwR6oTwnBIC8PjEHa3o8xslVuexOobh1TAoGBAMlO
JUHMMVmgxDaZq0c50Bn/r/k57QGj87E9mEbJeqBs+8fcxZoOFLEEd+Sb8Q1riqV9
12L2BAc6EoypoPUydbt0Q5/1G2VvCN1a6G43Ip7QM1cUTPrp17fvHWVSAMdq7lIr
ntabqmtZVGqcxedmG1N7BVNXBd4Jy5HjOZ8Qfg4RAoGBAMyX5s9hNH1SIOuzscN7
BG/QgDN1E1RR6H1cadVpwgGAgeSRuSbwJa/JowqJg4jp3hFXix1igb2N3YbA0PaX
vLLNtjNInwh9SiLmdYdL8Pr5PZYUYykWb5rK4wdHdfHCaYRPrNuBNdC06ZRy7u6h
QkDr1khNxKczPc1n8SA3VCe1AoGAYdWb39WIaoHquoqGppAfZnNQp/SSDkkLR6mi
10xWT5+H4oOWeZ+8SKfeSPnM9nO8p194jXz5SjXcDAbo1iIW++qubxAlp2+GRGZJ
Lj+XkM2pFfoky5FYqOkKRVLMVB7RAph2kuCGu7NnhoT43dRPFYxlczKJBHeIOzfO
qlLOoLECgYEAkexlwKGeXyJj481SfqCYhjiTjCiibx/s6yS2cmamgEKOZCB2osmq
3m9PvOAp26Sm1ISiuINNbpLY3Gi5fEvNUSyRx8HzRXP2fydvdgpltDxJUPaUVxvn
X46F8ewsMJ7/FDLSyjdzwvoDRvKCk99OBmGmofqh5zW0GrjcQjthmbk=
-----END RSA PRIVATE KEY-----
[root@linux-node1 ~]#

image-20211101101258305

刚刚返回刚刚的区域,继续配置

image-20211101101319092

现在我们复制git的url 就不会出现验证提示

image-20211101101331851

我们选择gitlab,url如下图

image-20211101101342385

查看gitlab版本

[root@linux-node1 ~]# rpm -qa|grep gitlab
gitlab-ce-8.14.5-ce.0.el7.x86_64

image-20211101101401289

我们现在就添加了一个git仓库,现在保存就可以了!

image-20211101101410438

立即构建

image-20211101101424446

点击Console Output 可以显示控制台的输出

image-20211101101437271

现在基本就算是构建成功了