【devops】五、Integrate工具——容器部署Jenkins

目录

    • 说明
    • 五、Integrate工具
      • 5.1 Jenkins介绍
      • 5.2 Jenkins安装
        • 法一:docker run 命令安装
        • 法二:yml文件安装
        • 登录Jenkins
      • 5.3 Jenkins入门配置
        • 5.3.1 构建任务
          • 1、gitlab上创建新项目
          • 2、Jenkins上新建任务并配置
        • 5.3.2 配置Jenkins上的源码拉取地址
        • 5.3.3 配置Maven构建代码
          • 1、Jenkins配置JDK&Maven并保存
          • 2、CI操作(1)——配置Jenkins任务构建代码
        • 5.3.4 配置Publish发布&远程操作
          • 1、配置Publish Over SSH连接
          • 2、CI操作(2)——配置任务的构建后操作
    • 总结

说明

这部分在Jenkins服务器中操作。

五、Integrate工具

持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。

Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。

Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。

5.1 Jenkins介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具

Jenkins应用广泛,大多数互联网公司都采用Jenkins配合GitLab、Docker、K8s作为实现DevOps的核心工具。

Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化CI/CD过程中的各种琐碎功能。

【devops】五、Integrate工具——容器部署Jenkins_第1张图片 【devops】五、Integrate工具——容器部署Jenkins_第2张图片

Jenkins最主要的工作就是将GitLab上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境上。
一般是GitLab上的代码经过大量的测试后,确定发行版本,再发布到生产环境。

CI/CD可以理解为:

  • CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。
    • 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。
  • CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。
    • 持续交付:让经过持续集成的代码可以进行手动部署。
    • 持续部署:让可以持续交付的代码随时随地的自动化部署。
      【devops】五、Integrate工具——容器部署Jenkins_第3张图片

5.2 Jenkins安装

法一:docker run 命令安装

这里使用第一种方法

# 1. 创建并进入目录
mkdir /usr/local/docker/jenkins_docker -p
cd /usr/local/docker/jenkins_docker

# 2. 拉取镜像,注意版本不能太低,太低的话Jenkins中一部分插件无法下载
docker pull jenkins/jenkins:2.361.2

# 3. 运行
docker run -di --name jenkins \ 
-p 8080:8080 -p 50000:50000 -u root \
-v /usr/local/docker/jenkins_docker/data:/var/jenkins_home \
--restart always \
jenkins/jenkins:2.361.2

# 4. 配置国内源安装插件
cd /usr/local/docker/jenkins_docker/data/updates
wget https://mirrors.aliyun.com/jenkins/updates/update-center.json

法二:yml文件安装

  1. 拉取Jenkins镜像
docker pull jenkins/jenkins
  1. 编写docker-compose.yml
# 1. 创建并进入目录
mkdir /usr/local/docker/jenkins_docker -p
cd /usr/local/docker/jenkins_docker

# 2. 编辑yml文件内容
vim docker-compose.yml

version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data/:/var/jenkins_home/

# 3. 执行
docker-compose up -d
  1. 用yml文件执行,首次启动会因为数据卷data目录没有权限导致启动失败,设置data目录写权限
    在这里插入图片描述
# 修改权限
chmod -R 777 data/
# 重新启动
docker-compose restart
    1. 重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站。如果慢的话可以更换镜像源
cd /usr/local/docker/jenkins_docker/data
vim hudson.model.UpdateCenter.xml


# 修改数据卷中的hudson.model.UpdateCenter.xml文件
'1.1' encoding='UTF-8'?>

  
    default</id>
    https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
'1.1' encoding='UTF-8'?>

  
    default</id>
    http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  1. 再次重启Jenkins容器,访问Jenkins(需要稍微等会)
docker restart jenkins

在这里插入图片描述


登录Jenkins

通过IP:8080登录
【devops】五、Integrate工具——容器部署Jenkins_第4张图片

  1. 查看密码登录Jenkins,并登录下载插件
# 通过日志查看密码
docker logs -f jenkins
# 或者进入容器内部查看密码
docker exec -it jenkins 
cat /var/jenkins_home/secrets/initialAdminPassword

【devops】五、Integrate工具——容器部署Jenkins_第5张图片
【devops】五、Integrate工具——容器部署Jenkins_第6张图片
选择需要安装的插件,这里可以先不用选,进入之后再到插件管理中下载,直接点击安装,就会进入下载界面,如下图。等待一会下载完成
【devops】五、Integrate工具——容器部署Jenkins_第7张图片
下载完毕设置信息进入首页(可能会出现下载失败的插件,失败也没关系,点击继续就可以,进入之后可以再次安装)

  1. 创建用户
    【devops】五、Integrate工具——容器部署Jenkins_第8张图片
    【devops】五、Integrate工具——容器部署Jenkins_第9张图片
    【devops】五、Integrate工具——容器部署Jenkins_第10张图片

  2. 下载插件
    来到系统管理—插件管理中—安装下面2个插件(Git Parameter / Publish Over SSH):Git Parameter能够使Jenkins可以从gitlab上拉取代码;Publish Over SSH作用是把构建好的jar包推送到目标服务器,并且发送一个脚本命令告诉目标服务器把当前可运行的目标文件跑起来。
    【devops】五、Integrate工具——容器部署Jenkins_第11张图片
    【devops】五、Integrate工具——容器部署Jenkins_第12张图片


5.3 Jenkins入门配置

由于Jenkins需要从Git拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。

5.3.1 构建任务

准备好GitLab仓库中的项目,并且通过Jenkins配置项目,实现当前项目的DevOps基本流程。

1、gitlab上创建新项目
  • 构建Maven工程发布到GitLab(Gitee、Github均可)
  1. 在gitlab上创建一个新的项目命名为“mytest”
    【devops】五、Integrate工具——容器部署Jenkins_第13张图片
    【devops】五、Integrate工具——容器部署Jenkins_第14张图片
  2. 填写项目名称,这里创建公开的,不需要验证就可以访问
    【devops】五、Integrate工具——容器部署Jenkins_第15张图片
    创建完成后出现以下页面:
    【devops】五、Integrate工具——容器部署Jenkins_第16张图片
以下命令记录一下,一旦往里面推送了代码,就消失了

git config --global user.name "Administrator"
git config --global user.email "[email protected]"

cd existing_folder
git init --initial-branch=main
git remote add origin http://192.168.2.210/root/mytest.git
git add .
git commit -m "Initial commit"
git push -u origin main
  1. GitLab查看项目
    【devops】五、Integrate工具——容器部署Jenkins_第17张图片
    注:代码可以通过编译工具上传到gitlab或者直接在gitlab上创建,由于我的电脑里没有Java编译工具,我直接在gitlab上创建pom.xml文件和HelloWorld.java和greeter.java文件。
    或者使用pycharm上传代码到gitlab,流程参考CSDN文档:https://blog.csdn.net/weixin_64124795/article/details/129697625
    【devops】五、Integrate工具——容器部署Jenkins_第18张图片
2、Jenkins上新建任务并配置
  1. 新建任务
    【devops】五、Integrate工具——容器部署Jenkins_第19张图片
  2. 选择自由风格构建任务
    【devops】五、Integrate工具——容器部署Jenkins_第20张图片
    确定之后就要配置Git的URL地址。

5.3.2 配置Jenkins上的源码拉取地址

Jenkins需要将Git上存放的源码存储到Jenkins服务所在磁盘的本地

  • 配置任务源码拉取的地址
  1. 进入到创建的【mytest任务】中,选择左侧的“配置”,将git的URL和对应分支配置上
    注意:分支必须要与gitlab 上的一致。由于我们gitlab创建的是公开的,所以这里不需要密码,如果gitlab是私有的,需要配置密码
    【devops】五、Integrate工具——容器部署Jenkins_第21张图片
  • Jenkins立即构建
  1. 点击立即构建之后,Jenkins就会拉取gitlab上的代码到容器内部
    【devops】五、Integrate工具——容器部署Jenkins_第22张图片
    查看任务拉取Git源码日志:查看构建工程的日志,点击上述③的任务条即可
    【devops】五、Integrate工具——容器部署Jenkins_第23张图片
    可以看到源码已经拉取到Jenkins本地,可以根据第三行日志信息,查看Jenkins本地拉取到的源码。也就是说Jenkins拉取的源码存放到了这个目录下。

  2. 构建成功后,说明源码已经拉取到Jenkins容器内部了,可以进入容器内部/var/jenkins_home/workspace/test查看Jenkins容器中的源码,与gitlab上的保持一致

docker exec -it jenkins bash
cd /var/jenkins_home/workspace/mytest
ls

源码存放位置:容器内/var/jenkins_home/workspace/mytest
【devops】五、Integrate工具——容器部署Jenkins_第24张图片

5.3.3 配置Maven构建代码

代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和Maven,并且配置到Jenkins服务。

maven能够将从gitlab上拉取的代码进行构建,所以需要在Jenkins上进行配置。
(修改settings.xml文件的步骤在Build阶段工具中进行了配置,参考前面)

  • 配置已经完成,我们还需要把/usr/local下的maven和jdk文件移动到/usr/local/jenkins_docker/data下:
# 检查maven文件和jdk文件
cd /usr/local
ls

# 将/usr/local目录下的jdk和maven移动到 /usr/local/docker/jenkins_docker/data 目录下,目的是通过数据卷映射到容器内部
cd /usr/local/jenkins_docker/data
mv /usr/local/maven/ ./
mv /usr/local/jdk/ ./
ls

(Build阶段工具已做) 准备JDK、Maven压缩包通过数据卷映射到Jenkins容器内部/var/jenkins_home/下。
数据卷存放位置:
在这里插入图片描述
(Build阶段工具已做) 解压压缩包,并配置Maven的settings.xml


<mirror>  
    <id>alimavenid>  
    <name>aliyun mavenname>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/url>
    <mirrorOf>centralmirrorOf>          
mirror>


<profile>
    <id>jdk-1.8id>
    <activation>
        <activeByDefault>trueactiveByDefault>
        <jdk>1.8jdk>
    activation>
    <properties>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
        <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
    properties>        
profile>
1、Jenkins配置JDK&Maven并保存

【系统管理】——【全局工具配置】——【配置JDK&Maven】
【devops】五、Integrate工具——容器部署Jenkins_第25张图片
路径为jdk在容器内部的位置,前面操作已经把jdk文件通过数据卷映射到了容器内的/var/jenkins_home/jdk
【devops】五、Integrate工具——容器部署Jenkins_第26张图片
路径为maven在容器内部的位置,前面操作已经把maven文件通过数据卷映射到了容器内的/var/jenkins_home/maven
【devops】五、Integrate工具——容器部署Jenkins_第27张图片

2、CI操作(1)——配置Jenkins任务构建代码

这步配置可以让Jenkins调用maven将代码打包成jar包
【devops】五、Integrate工具——容器部署Jenkins_第28张图片
【devops】五、Integrate工具——容器部署Jenkins_第29张图片点击立即构建测试
查看日志可以看到执行了执行的clean packsge -DskipTests 命令:
【devops】五、Integrate工具——容器部署Jenkins_第30张图片
再进入到Jenkins容器内部查看,可以看到target下的jar包:
cd /var/jenkins_home/workspace/mytest/target
【devops】五、Integrate工具——容器部署Jenkins_第31张图片

5.3.4 配置Publish发布&远程操作

jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH

1、配置Publish Over SSH连接

配置Publish Over SSH连接测试、生产环境,这里配置的信息都是目标服务器的信息,目标服务器里必须要有docker

  1. Publish Over SSH配置
    【系统管理】——【系统配置】——【 Publish over SSH】
    【devops】五、Integrate工具——容器部署Jenkins_第32张图片
    【devops】五、Integrate工具——容器部署Jenkins_第33张图片
    高级设置中,勾选密码,这个密码是目标服务器对应的密码,不是Jenkins的密码。这里是192.168.2.211的密码
    【devops】五、Integrate工具——容器部署Jenkins_第34张图片
    注意:提前要创建目标服务器指定的目录。否则点击测试会报错,创建之后测试成功
    【devops】五、Integrate工具——容器部署Jenkins_第35张图片
2、CI操作(2)——配置任务的构建后操作
  • Jenkins通过构建后操作配置,把maven构建好的jar包发布到目标服务器
  • 配置构建后操作
    【devops】五、Integrate工具——容器部署Jenkins_第36张图片
    选择把哪些文件推送到目标服务器上
    【devops】五、Integrate工具——容器部署Jenkins_第37张图片
    立即构建任务,并去目标服务器目录下查看,这里是/usr/local/test,目标目录在【系统管理】——【系统配置】——最下面的【Publish over SSH】中配置过
    查看构建日志
    【devops】五、Integrate工具——容器部署Jenkins_第38张图片
    构建成功后能看到目标服务器中目标目录下多了一个target文件,说明已经把内容推送到目标服务器了
    【devops】五、Integrate工具——容器部署Jenkins_第39张图片

总结

到这里,我们完成了镜像拉取,通过maven构建成jar包,通过publish over ssh 推送到目标服务器的工作。接下来我们还要增加对代码进行检测、推送到harbor仓库等操作。

你可能感兴趣的:(devops流水线搭建流程,devops,jenkins,docker,云原生)