当前位置: 首页 > article >正文

DevOps实现CI/CD实战(二)-Jenkins配置

六、 CI/CD入门操作

基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成

基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署

1. 创建springboot项目

编写简单的程序

  • 修改pom.xml,添加打包的名称配置
<build>
        <!-- 打包的名称 -->
        <finalName>test</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 创建Dockerfile,docker-compose.yml

Dockerfile文件

FROM openjdk:8-jdk-alpine
COPY test.jar /usr/local/
WORKDIR /usr/local/
CMD java -jar test.jar

docker-compose.yml文件

version: '3.1'
services:
  test:
    build:
      context: ./
      dockerfile: Dockerfile
    image: test:v1.0.0
    container_name: test
    ports:
      - 8080:8080
  • 提交代码,推送到gitlab上

2. 持续交付、部署

程序代码在经过多次集成操作到达最终可以交付,持续交付整体流程和持续集成类似,不过需要选取指定的发行版本

1. Jenkins中创建一个item

在Jenkins的首页,点击新建Item
在这里插入图片描述

2. 配置Item的git仓库

进入新建的Item中,配置Git的远程仓库
在这里插入图片描述

3. 配置Item的Build Steps

然后配置maven,拉取代码后需要用maven打包。选择调用顶层maven目标,选择你的maven。
在这里插入图片描述
构建后操作,把jar推送至目标服务器,然后运行。
在这里插入图片描述
Jenkins点击立即构建,jenkins会拉取最近的代码,重新构建,然后把打包后的文件上传到容器根目录下的workspace
在这里插入图片描述
要想运行上传过来的文件,还需要进行 以下操作;

点击配置,找到构建后操作
在这里插入图片描述
进入配置页面后,找到构建后操作在这里插入图片描述
修改 Source files下面的配置,添加docker配置的目录

target/*.jar docker/*

Exec command下面添加下面配置

cd docker 
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build

点击应用,保存。然后再次构建,再次构建后,发现构建失败,报了下面的问题:在这里插入图片描述
解决方法:**

1.cd docker 要采用绝对路径

Exec command下面添加下面配置

cd /usr/local/test/docker 
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build

2.宿主机的端口号已经被Jenkins占用,修改docker-compose.yml文件中宿主机映射的端口号

version: '3.1'
services:
  test:
    build:
      context: ./
      dockerfile: Dockerfile
    image: test:v1.0.0
    container_name: test
    ports:
      - 8081:8080

完成上述步骤之后,再次构建,构建成功。然后去宿主机查看docker容器,docker ps发现容器运行失败了。

这也是一个小插曲。查看日志

[root@clear test]# docker logs -f 64b464420c8d
no main manifest attribute, in test.jar

修改项目的pox.xml

  1. 添加下面配置
<packaging>jar</packaging>
  1. 检查中标签下面是否有个 true,有则去掉这个标签。
  2. 在这里插入图片描述
    操作完成后,再次重新构建,docker-ps查看容器,成功了。
    在这里插入图片描述
    访问192.168.201.111:8081,成功了
    在这里插入图片描述
    虽然已经可以访问,但是还存在一个小问题,就是我修改代码,重新构建之后,原来的重名的镜像都变成了none,
    在这里插入图片描述
    需要一个命令,添加到构建后执行的命令中
# 删除为none的镜像
docker image prune -f 

# 完整命令
cd /usr/local/test/docker 
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f 

在这里插入图片描述
CI的整个流程就搞定了,但是我们每次都是拉取最新的代码进行构建的,我们需要不同的环境进行不同的部署。这就需要git pameter插件了。

配置git参数。在这里插入图片描述
配置把代码切换到当前的tag上,选择不同的提交点。需要在maven打包之前,先切换代码的提交点。在这里插入图片描述
添加配置 git checkout $tag,切换提交点。

把执行步骤拖到maven构建的前面
在这里插入图片描述
给代码打上不同的标签。
在这里插入图片描述
在这里插入图片描述

再次到构建的页面,就可以选择对应的标签进行构建了。在这里插入图片描述


http://www.kler.cn/news/285266.html

相关文章:

  • 鸿蒙( API 12 Beta5版)开发实战-UI优化布局性能
  • 视频中间件:与海康ISC平台级联
  • linux文件——文件系统——学习、理解、应用软硬件链接
  • 2025届北森智鼎SHL牛客倍智易考智联题库、十大测评系统通关攻略
  • 数值分析笔记(六)非线性方程求根
  • 周末总结(2024/08/31)
  • C语言 | Leetcode C语言题解之第383题赎金信
  • 宿舍|基于SprinBoot+vue的宿舍管理系统(源码+数据库+文档)
  • 访问者模式详解
  • 【摸鱼笔记】python 提取和采集 finereport 未绑定目录的报表模板
  • GPT-SoVITS:零样本语音合成AI
  • 如何使用pytest的fixtures以及pytest-dependency插件来管理接口之间的依赖关系(下)
  • V8 引擎的核心架构
  • DCB简介
  • Python入门全解析丨Part3-Python的循环语句
  • 英语2-小作文
  • Java | Leetcode Java题解之第386题字典序排数
  • 性能优化笔记二(本地缓存)
  • 05:【江科大stm32】:定时器输出比较功能(PWM)
  • Android 优化之 查找so 文件的来源
  • Camtasia 2024 v2024.0.6 for Mac 中文版 屏幕录像视频录制编辑软件
  • 找出两个序列的中位数
  • Python3.0以后各个版本区别介绍
  • 网络模型及协议介绍
  • STM32原理图一些引脚VDDA/VSSA/VBAT/OSC/NRST/BOOT
  • 随手记录第十五话 -- Spring Boot 3.2.3+Grafana+Prometheus+Loki实现一套轻量级监控加日志收集系统
  • 波导阵列天线单元学习笔记7 一种用直接金属激光烧结考虑的轻质量,宽带,双圆极化波导腔体阵列
  • Datawhale X 李宏毅苹果书 AI夏令营 Task2打卡
  • c++命令模式
  • Vscode推送代码到 Gitee