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

news/2024/7/4 8:11:03 标签: devops, jenkins, docker, 云原生

目录

    • 说明
    • 五、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过程中的各种琐碎功能。

在这里插入图片描述在这里插入图片描述

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

CI/CD可以理解为:

  • CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。
    • 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。
  • CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。
    • 持续交付:让经过持续集成的代码可以进行手动部署。
    • 持续部署:让可以持续交付的代码随时随地的自动化部署。
      在这里插入图片描述

5.2 Jenkins安装

docker_run__36">法一: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文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>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登录
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
选择需要安装的插件,这里可以先不用选,进入之后再到插件管理中下载,直接点击安装,就会进入下载界面,如下图。等待一会下载完成
在这里插入图片描述
下载完毕设置信息进入首页(可能会出现下载失败的插件,失败也没关系,点击继续就可以,进入之后可以再次安装)

  1. 创建用户
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 下载插件
    来到系统管理—插件管理中—安装下面2个插件(Git Parameter / Publish Over SSH):Git Parameter能够使Jenkins可以从gitlab上拉取代码;Publish Over SSH作用是把构建好的jar包推送到目标服务器,并且发送一个脚本命令告诉目标服务器把当前可运行的目标文件跑起来。
    在这里插入图片描述
    在这里插入图片描述


5.3 Jenkins入门配置

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

5.3.1 构建任务

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

1、gitlab上创建新项目
  • 构建Maven工程发布到GitLab(Gitee、Github均可)
  1. 在gitlab上创建一个新的项目命名为“mytest”
    在这里插入图片描述
    在这里插入图片描述
  2. 填写项目名称,这里创建公开的,不需要验证就可以访问
    在这里插入图片描述
    创建完成后出现以下页面:
    在这里插入图片描述
以下命令记录一下,一旦往里面推送了代码,就消失了

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

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查看项目
    在这里插入图片描述
    注:代码可以通过编译工具上传到gitlab或者直接在gitlab上创建,由于我的电脑里没有Java编译工具,我直接在gitlab上创建pom.xml文件和HelloWorld.java和greeter.java文件。
    或者使用pycharm上传代码到gitlab,流程参考CSDN文档:https://blog.csdn.net/weixin_64124795/article/details/129697625
    在这里插入图片描述
2、Jenkins上新建任务并配置
  1. 新建任务
    在这里插入图片描述
  2. 选择自由风格构建任务
    在这里插入图片描述
    确定之后就要配置Git的URL地址。

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

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

  • 配置任务源码拉取的地址
  1. 进入到创建的【mytest任务】中,选择左侧的“配置”,将git的URL和对应分支配置上
    注意:分支必须要与gitlab 上的一致。由于我们gitlab创建的是公开的,所以这里不需要密码,如果gitlab是私有的,需要配置密码
    在这里插入图片描述
  • Jenkins立即构建
  1. 点击立即构建之后,Jenkins就会拉取gitlab上的代码到容器内部
    在这里插入图片描述
    查看任务拉取Git源码日志:查看构建工程的日志,点击上述③的任务条即可
    在这里插入图片描述
    可以看到源码已经拉取到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
在这里插入图片描述

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>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>

<!-- JDK1.8编译插件 -->
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>        
</profile>
1、Jenkins配置JDK&Maven并保存

【系统管理】——【全局工具配置】——【配置JDK&Maven】
在这里插入图片描述
路径为jdk在容器内部的位置,前面操作已经把jdk文件通过数据卷映射到了容器内的/var/jenkins_home/jdk
在这里插入图片描述
路径为maven在容器内部的位置,前面操作已经把maven文件通过数据卷映射到了容器内的/var/jenkins_home/maven
在这里插入图片描述

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

这步配置可以让Jenkins调用maven将代码打包成jar包
在这里插入图片描述
在这里插入图片描述点击立即构建测试
查看日志可以看到执行了执行的clean packsge -DskipTests 命令:
在这里插入图片描述
再进入到Jenkins容器内部查看,可以看到target下的jar包:
cd /var/jenkins_home/workspace/mytest/target
在这里插入图片描述

5.3.4 配置Publish发布&远程操作

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

1、配置Publish Over SSH连接

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

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

总结

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


http://www.niftyadmin.cn/n/191466.html

相关文章

elementui的介绍和使用 以及使用elementui完成增删改查和登录

1. 正文 1、elementui布局框架 2、使用elementuivueaxios完成一个案例。 2.elementui布局框架 Element&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 。 换句话说:Element它是再vue2.0得基础上&#xff0c;提供了各种组件(比如表单 表格 菜…

记录一些uvm自带的后门访问方法

文章目录前言一、uvm后门访问方法1、 int uvm_hdl_check_path(string path)2、int uvm_hdl_deposit(string path, uvm_hdl_data_t value)3、int uvm_hdl_force(string path, uvm_hdl_data_t value)4、int uvm_hdl_release(string path)5、int uvm_hdl_read(string path, output…

JKind入门(一)简单介绍和使用

The JKIND Model Checker 其是一种针对Lustre语言的模型检验工具&#xff0c;其是由Rockwell Collins和明尼苏达大学开发的开源的工业级的模型检查器&#xff0c;并于2018年发布。JKIND使用多个并行的引擎应用于拥有无限个状态的模型来证明属性或者给出其反例。 JKind - An inf…

第12章_数据库其它调优策略

第12章_数据库其它调优策略 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0…

Springboot整合rabbitmq并实现消息可靠性和持久性

Springboot整合rabbitmq并实现消息可靠性和持久性1. 环境准备2. 创建 Spring Boot 项目3. 配置 RabbitMQ4. 实现消息的可靠性和持久性4.1 发送可靠的消息4.2 接收可靠的消息5. 运行应用程序6. 总结Spring Boot 是一种快速构建应用程序的框架&#xff0c;而 RabbitMQ 是一种消息…

Thinkphp 6.0多对多关联查询

本节课我们来了解关联模型中&#xff0c;多对多的关联查询以及新增删除等操作。 一&#xff0e;多对多关联 1. 复习一下一对一&#xff0c;一个用户对应一个用户档案资料&#xff0c;是一对一关联&#xff1b; 2. 复习一下一对多&#xff0c;一篇文章对应多个评论&#xff0c;是…

C的实用笔记32——二级指针(多级指针)

1.二级指针概念 1、一级指针可以存放一级指针的地址&#xff1a;但有严重缺陷 举例&#xff1a;指针的基本逻辑&#xff0c;回顾如图&#xff1a; #include <stdio.h> int main(int argc, char const *argv[]) {int data 100;int *p &data;printf("data的地…

大数据周会-本周学习内容总结08

目录 01【Hadoop】 1.1【MapReduce】 1.2【Yarn】 1.3【让用户自定义脚本在任意地方都可执行-配置方法】 02【下月学习内容】 老师指导 01【Hadoop】 尚硅谷大数据Hadoop教程&#xff08;Hadoop 3.x安装搭建到集群调优&#xff09; 1.1【MapReduce】 1.2【Yarn】 1.3【让…