Jenkins 安装以及使用

发布于 2022-12-22  656 次阅读


jenkins 安装以及使用

简介:最早在2019就接触并使用jenkins,但是那个时候开发团队主要是使用PHP来开发语言,没有像java 那样本地构建maven 包消耗时间且操作重复,但是开发语言大环境的因素,我们预计Java还将长期霸榜,所以就需要借助于类型jenkins 的工具,去实现CI这一个构想。

jenkins的安装以及使用详情可以参考官网文档:https://www.jenkins.io/doc/

一、jenkins 简介

Jenkins是一款由Java编写的开源的持续集成工具,起源于Hudson(Hudson是商用的),用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

1.1 持续集成CI(Continuous Integration)

​ 在持续集成环境中,开发人员将会频繁的提交代码到主干。这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流进行验证。这样做是基于之前持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。

1.2 持续交付CD(Continuous Delivery)

​ 持续交付指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审,如果评审通过,代码就进入生产阶段

​ 持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的

1.3 持续部署CD (Continuous Deployment)

​ 如果我们想更加深入一步的话,就是持续部署了。通过这个方式,任何修改通过了所有已有的工作流就会直接和客户见面。没有人为干预(没有一键部署按钮),只有当一个修改在工作流中构建失败才能阻止它部署到产品线。

二、jenkins 安装以及配置

参考官方文档:

docker run -u root -d -p 8080:8080 -p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always jenkinsci/blueocean

参数说明

  • -p 8080:8080 \ #web控制台的端口
  • -p 50000:50000 \ #集群间通信的端口
  • -v jenkins-data:/var/jenkins_home \ #最重要的目录,这里面包含着Jenkins的所有目录(以文件的方式存数据),注意备份,恢复Jenkins的时候只需要挂上这个目录就可以直接恢复之前的Jenkins的所有配置
  • -v /etc/localtime:/etc/localtime:ro \ #Jenkins推荐的镜像内部时区不是中国时间,所以我们把宿主机的时间挂到Jenkins容器内
  • -v /var/run/docker.sock:/var/run/docker.sock \ #将宿主机的docker命令挂到Jenkins中,从而再Jenkins中可以直接使用docker命令
  • --restart=always \ #随docker开机自启
  • jenkinsci/blueocean #推荐的版本(安装了blueocean插件)

查看jienkins 容器安装情况

[root@localhost docker]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                      NAMES
7b2ce2f24fe9   jenkinsci/blueocean   "/sbin/tini -- /usr/…"   11 minutes ago   Up 11 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   pedantic_lalande

1.查看jenkins 的登录用户以及密码

由于我们在前面已经将路径挂载出来了,查看密码

[root@localhost docker]# docker volume ls
DRIVER    VOLUME NAME
local     jenkins-data
[root@localhost docker]# docker volume inspect jenkins-data
[
    {
        "CreatedAt": "2022-12-05T02:38:57-05:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/jenkins-data/_data",
        "Name": "jenkins-data",
        "Options": null,
        "Scope": "local"
    }
]
##
[root@localhost docker]# cat /var/lib/docker/volumes/jenkins-data/_data/secrets/initialAdminPassword
be60e03269c649c58727bc58b413369e

选择安装推荐的插件,将自动安装需要需要的插件,会有无法安装的插件,重试后无法安装就先跳过。

image-20221205170705798

实例配置使用默认的就可以了

接着查看系统管理,看到我们由于部分插件问题导致jenkins 报错,我们补全这些插件就可以升级版也可以解决这些问题

三、Jenkins 自动构建过程

创建一个流水线

image-20230109150157884

配置流水线

image-20230110172544544

jenkinsfile是 在对应vic-web-test 目录下根目录创建

设置一个触发器

image-20230109155643398

这里自动构建过程中要用到触发器,需要使用gitlab Webhook的

11f9e56751c7b604056afd5de43d3b2f32

image-20230109155342111

在Gitlab的项目管理中添加Webhook钩子:JENKINS_URL/job/demo1/build?token=TOKEN_NAME

http://jiayongli:11f9e56751c7b604056afd5de43d3b2f32@192.168.232.51:8080/job/demo1/build?token=jiayongli

image-20230110155640809

在git 上配置时候会出现:Urlis blocked: Requests to the local network are not allowed

image-20230110155215885