写点什么

云原生(九) | Devops 篇之 Jenkins 安装与实战

作者:Lansonli
  • 2022 年 7 月 21 日
  • 本文字数:2654 字

    阅读完需:约 9 分钟

云原生(九) | Devops篇之Jenkins安装与实战

​一、Jenkins 安装

1、背景

Jenkins,之前叫做 Hudson,由 SUN 公司启动,2010 年 oracle 收购 SUN 导致 hudson 商标归 oracle 保留,hudson 的主要贡献者基于 hudson 更名为 jenkins 并持续更新。很长一段时间内 lenkins 和 Hudson 继续作为两个独立的项目,每个都认为对方是自己的分支。目前 Hudson 已经停止开发,最新的版本发布于 2016 年,而 Jenkins 的社区和开发却异常活跃。Jenkins 是目前市场上使用最多的 CICD 工具。

  • Jenkins 是基于 Java 开发的一种持续集成工具。

  • Jenkins 作为持续集成工具,持续集成是其核心功能,在核心功能基础之上可扩展实现强大的 CD 功能。

2、特点

  • 开源免费

  • 易于安装(基本上算是所有 CI 工具里安装配置最简单的)

  • 多平台支持(windows/linux/macos)

  • 主从分布式架构

  • 提供 web 可视化配置管理页面

  • 安装配置简单

  • 插件资源丰富


3、官网安装文档地址

https://www.jenkins.io/zh/doc/book/installing/

大家最好看着官网文档进行安装,好的开源软件一般官网文档都是写得很好,不然很难火起来。

这边主要演示用 docker 方式来安装 Jenkins,没有安装 docker 或者不知道 docker 怎么安装的同学可以先看一下我这篇文章《https://lansonli.blog.csdn.net/article/details/124202180【云原生 | Docker篇】轻松学会原理|架构|安装|加速(一)》,安装完 docker 再接着往下看吧



4、开始安装

注意:

  • jenkinsci/jenkins 是没有 blueocean 插件的,得自己装

  • jenkinsci/blueocean:带了的

 #自己构建镜像 RUN 的时候就把时区设置好 #如果是别人的镜像,docker hub,UTC; 容器运行时 , -v /etc/localtime:/etc/localtime:ro

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
复制代码

#/var/run/docker.sock 表示 Docker 守护程序通过其监听的基于 Unix 的套接字。 该映射允许 jenkinsci/blueocean 容器与 Docker 守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他 Docker 容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含 agent 部分用 docker;例如, agent { docker { ... } } 此选项是必需的。

#如果你的 jenkins 安装插件装不上。使用这个镜像【 registry.cn-qingdao.aliyuncs.com/lfy/jenkins:plugins-blueocean 】默认访问账号/密码是【admin/admin】


 5、安装中



6、安装完成



7、页面访问



8、通过以下命令查找密码

方式一:





方式二:




9、安装默认推荐插件,并且配置用户

选择安装推荐的插件选项即可



出现这个等待自动安装插件完成就好



 配置用户,点击右下角保存即可





安装完成 



二、Jenkins 实战


1、准备一个 git 项目进行测试

我们以 gitee 为例,github 可能太慢了。需要 idea 安装 gitee 插件。或者自己熟悉手动命令也行。

简要说明一下,其实这里用 gitee、github 或者用 gitcode 都能实现的,具体用哪个,同学们可以自行选择

步骤:

  • idea 创建 Spring Boot 项目



  • VCS - 创建 git 仓库



  • gitee 创建一个仓库,本地上传到仓库上



  • idea 提交内容到 gitee



  • 开发项目基本功能,并在项目中创建一个 jenkinsfile 文件



  • 创建一个名为 devops-java-demo 的流水线项目,使用项目自己的流水线





Jenkins 的工作流程

先定义一个流水线项目,指定项目的 git 位置

流水线启动

1、先去 git 位置自动拉取代码

2、解析拉取代码里面的 Jenkinsfile 文件

3、按照 Jenkinsfile 指定的流水线开始加工项目


不太会写流水线配置文件可以参考官方文档,非常详细的 

官网流水线的说明文档:流水线


Jenkins 重要的点

1、jenkins 的家目录 /var/jenkins_home 已经被我们 docker 外部挂载了 

/var/lib/docker/volumes/jenkins-data/_data

2、WORKSPACE(工作空间)=/var/jenkins_home/workspace/java-devops-demo

  • 每一个流水线项目,占用一个文件夹位置

  • BUILD_NUMBER=5;当前第几次构建

  • WORKSPACE_TMP(临时目录)=/var/jenkins_home/workspace/java-devops-demo@tmp

JOB_URL=http://192.168.88.163:8080/job/java-devops-demo/


3、常用的环境如果没有,jenkins 配置环境一大堆操作


4、jenkins_url :

http://192.168.88.163:8080/


小案例测试: 

// 写流水线的脚本(声明式、脚本式)pipeline{  // 全部的CICD流程都需要在这里定义
// 任何一个代理可用就可以执行 agent any
// 定义一些环境信息
// 定义流水线的加工流程 stages { // 流水线的所有阶段 // 1、编译 stage('编译'){ steps{ // 要做的所有事情 echo "编译..." } }
// 2、测试 stage('测试'){ steps{ // 要做的所有事情 echo "测试..." } }
// 3、打包 stage('打包'){ steps{ // 要做的所有事情 echo "打包..." } }
// 4、部署 stage('部署'){ steps{ // 要做的所有事情 echo "部署..." } } }
复制代码

​​

 


2、远程构建触发


期望效果: 远程的 github 代码提交了,jenkins 流水线自动触发构建。


实现流程:

1、保证 jenkins 所在主机能被远程访问

可以在云平台配置一个公网 IP,让 gitee 能远程访问 

2、jenkins 中远程触发需要权限,我们应该使用用户进行授权


3、配置 gitee/github,webhook 进行触发



测试成功

 


 前面出现两次错误是因为我的地址没有加上用的 API Token,下图是生成 Token 的设置




 #远程构建即使配置了 github 的 webhook,默认会 403.我们应该使用用户进行授权

1、创建一个用户

2、一定随便登陆激活一次

3、生成一个 apitoken

http://cheshi:11b713938dd63ea6dd54b322c362642a5c@192.168.88.163:8080/job/simple-java-maven-app/build?token=lansonli


​​


远程触发:


JENKINS_URL /job/simple-java-maven-app/build?token= TOKEN_NAME 请求即可

以后直接提交 push 代码就会触发自动构建,不用手动执行触发了


测试官方推荐的 gitcode 是否也支持这个功能

我用阿里云的服务器,又重新搭了一遍 Jenkins,以下就是我测试的结果,其实都能用的

1、复制上面的测试代码提交到 gitcode,如果不知道如何使用 gitcode 可以看一下官方教程



2、配置 webhook 进行触发

有人说那些 apitoken 生成过程呢,我这边就直接跳过,因为上面都写的很详细,就不占用篇幅再写一遍了



 配置原理还是一样的,这里只要写一下 URL,下面勾选一下触发事件,点击提交就可以生效了


3、见证测试结果



经过多次失败后一度怀疑 gitcode 是否能用,结果是我多虑了,肯定是能用的,失败是因为我复制的 URL 有问题导致,所以大家测试一定要注意细节




发布于: 2022 年 07 月 21 日阅读数: 27
用户头像

Lansonli

关注

微信公众号:三帮大数据 2022.07.12 加入

CSDN大数据领域博客专家,华为云享专家、阿里云专家博主、腾云先锋(TDP)核心成员、51CTO专家博主,全网六万多粉丝,知名互联网公司大数据高级开发工程师

评论

发布
暂无评论
云原生(九) | Devops篇之Jenkins安装与实战_云原生_Lansonli_InfoQ写作社区