[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]

news/2025/1/15 2:10:05/

10、自由风格的CI操作(中间架构)

中间架构图

在这里插入图片描述

创建web项目

        创建一个 web 项目,就使用简单的 spring boot 工程,例如工程名为 hellojks。仅需导 入 spring web 依赖即可。

在这里插入图片描述

在这里插入图片描述

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String helloHandle(){return "Hello Jenkins!!!!";}
}

在这里插入图片描述

启动测试,访问成功

在这里插入图片描述

Idea提交项目到远程仓库

在gitlab中创建一个远程仓库,用于管理之前创建的web工程

在这里插入图片描述

在这里插入图片描述

Idea创建本地库

在这里插入图片描述

        仿照远程仓库页面中的 Git global stetup 中的命令,在项目的 Terminal 窗口中创建一个全局用户。

在这里插入图片描述

提交代码到本地库

在项目上右击,选择 Git -> Commit Directory

在这里插入图片描述

        此时会弹出一个 Commit to master 的窗口。在其中选择要提交的文件,并在文本区填写提交日志。然后 Commit

在这里插入图片描述

然后会看到警告,不影响提交,直接再 Commit Anyway 即可。

在这里插入图片描述

提交代码到远程库

首先要从远程仓库中获取仓库地址。选择复制 Clone with HTTP 的地址。

在这里插入图片描述

然后在项目上右键,选择 Git -> Push

在这里插入图片描述

在新窗口中点击 Define remote,在弹出的窗口中粘贴进复制来的远程仓库地址。

在这里插入图片描述

在这里插入图片描述

Push 后会弹出访问 GitLab 的登录窗口
输入用户名 root,密码为前面GitLab修改过的密码

在这里插入图片描述

推送成功后,在 idea 右下角即可看到成功提示。

在这里插入图片描述

此时刷新 GitLab 页面,即可看到推送来的项目。
在这里插入图片描述

从jenkins拉取代码

新建任务

在这里插入图片描述

jenkins集成gitlab

在这里插入图片描述

对于 public 的 GitLab 仓库,直接指定仓库地址,应用保存即可。但对于 private 仓库,则需要指定访问 GitLab 的用户名与密码。点击添加按钮,即可打开下面的窗口。

在这里插入图片描述

        在其中填写用户名与密码后“添加”即可返回之前的页面,此时在 Credentials 下拉框中 即可找到新添加的用户信息,选择即可。

在这里插入图片描述

立即构建

在这里插入图片描述

查看控制台输出

在这里插入图片描述

在这里插入图片描述

        上面是第二次构建,在第一次构建时,Jenkins执行 git init /var/jenkins_home/workspace/my_hellojks 命令可以看出,Jenkins 将其容器内的/var/jenkins_home/workspace/my_hellojks 目录作为项目的本地仓库,也就是数据卷目录。进入 jenkins 数据卷可以看到该项目已经存在了。

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

将项目打为jar包

        在 Jenkins 能够通过配置,调用本地的 maven 的 mvn 命令,将拉取来的项目打为 Jar 包。

Jenkins 配置 mvn 命令

在这里插入图片描述

        点击配置后,打开配置页面。然后点击 Build Steps,跳转到以下位置。

在这里插入图片描述

调用顶层 Maven 目标,使用前面配置的 Maven 来完成打包任务。

“clean package -DskipTests” 是一个 Maven 命令,用于构建 Java 项目并跳过运行测试。

在这里插入图片描述

重新构建

在这里插入图片描述

构建成功

在这里插入图片描述

        构建成功后进入 jenkins 数据卷目录/var/jenkins_home/workspace/my_hellojks 中可以看 到新增了 target 目录("target" 目录是 Maven 构建工具生成的默认目录,用于存放构建过程中生成的各种输出文件。)。打开 target 目录,可以看到打出的 jar 包。
在这里插入图片描述

代码质量检测

        在 Jenkins 的 my_hellojks 项目中应用 SonarScanner 对其代码进行质量检测。所以 需要在该项目中配置 SonarScanner

在这里插入图片描述

在这里插入图片描述

        再次执行立即构建,构建成功后,刷新 SonarQube 页面,便可看到新增了一个项目。

在这里插入图片描述

构建成功,查看页面
在这里插入图片描述

在这里插入图片描述

jenkins将代码推送到目标服务器

在这里插入图片描述

在这里插入图片描述

        在返回的任务首页中,再次执行立即构建。查看日志可以看到连接目标服务器,推送 1 个文件的日志。

在这里插入图片描述

目标服务器查看,可以看到 jar 包已经推送了过来。

在这里插入图片描述

构建镜像启动容器

        通过在 Jenkins 中配置在目标服务器中将要执行的相关命令,使得 Jenkins 将 jar 包推送 到目标服务器后,立即自动执行配置的命令,将 jar 包构建为一个镜像,并启动其相应的容 器,使项目启动运行。

定义 Dockerfile

        若要构建镜像,就需要定义其 Dockerfile。现在 Idea 的工程中新建一个 Directory,例如 docker,然后在其中新建一个 Dockerfile

        idea终端执行mvn clean package, 是一个 Maven 命令,用于清理项目并执行构建操作。

在这里插入图片描述

在这里插入图片描述

Dockerfile文件内容

FROM openjdk:8u102
LABEL auth="shengxia" email="shengxia@163.com"
COPY hellojenkins-0.0.1-SNAPSHOT.jar /jenkins/hellojenkins.jar # 复制到目标服务器所在的目录
WORKDIR /jenkins
ENTRYPOINT ["java", "-jar", "hellojenkins.jar"]

定义 compose.yml

        在 idea 的新建目录中再新建一个 compose.yml,用于构建镜像和启动容器。

在这里插入图片描述

services:hellojenkins:build: ./image: hellojenkinscontainer_name: myhellojenkinsports:- 8080:8080

推送到 GitLab

在这里插入图片描述

再配置构建后操作

在这里插入图片描述

重新构建

        Jenkins 中在返回的任务首页中,再次执行立即构建。构建成功后,查看目标服务器中的/jenkins 目录,发现 docker 目录及其下的两个 docker 文件已经存在了,且 jar 包 也复制了进来。

在这里插入图片描述

        在目标服务器中 docker images,可以看到 hellojenkins 镜像已经生成。

在这里插入图片描述

在目标服务器中 docker ps,可以看到容器已经启动了。

在这里插入图片描述

在浏览器中访问目标服务器中的应用,已经可以访问了。

在这里插入图片描述

        修改idea中的代码,然后push到gitlab上面,点击构建,就可以实现交付了

修改代码

package com.example.hellojenkins.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String helloHandle(){return "Hello Jenkins. This is the second modified!!!!";}
}

立即构建
在这里插入图片描述

查看
在这里插入图片描述


http://www.ppmy.cn/news/1003719.html

相关文章

Spring接口InitializingBean的作用和使用介绍

在Spring框架中,InitializingBean接口是一个回调接口,用于在Spring容器实例化Bean并设置Bean的属性之后,执行一些自定义的初始化逻辑。实现InitializingBean接口的Bean可以在初始化阶段进行一些必要的操作,比如数据的初始化、资源…

深度学习Redis(1):Redis内存模型

前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合…

Agents改变游戏规则,亚马逊云科技生成式AI让基础模型加速工作流

最近,Stability AI正式发布了下一代文生图模型——Stable Diffusion XL 1.0这次的1.0版本是Stability AI的旗舰版生图模型,也是最先进的开源生图模型。 在目前的开放式图像模型中,SDXL 1.0是参数数量最多的。官方表示,这次采用的…

Django的FBV和CBV

Django的FBV和CBV 基于django开发项目时,对于视图可以使用 FBV 和 CBV 两种模式编写。 FBV,function base views,其实就是编写函数来处理业务请求。 from django.contrib import admin from django.urls import path from app01 import view…

Python: Django 服务部署可能遇到的一些问题

502 bad gateway 不要用 python3 manage.py runserver 启动服务&#xff0c; 而要用&#xff1a; daphne -b 0.0.0.0 -p <端口> <工程名>.asgi:application此外&#xff0c;在 setting.py 中&#xff0c;修改&#xff1a; import osSECRET_KEY os.environ.get(D…

kafka权威指南(阅读摘录)

零复制 Kafka 使用零复制技术向客户端发送消息——也就是说&#xff0c;Kafka 直接把消息从文件&#xff08;或者更确切地说是 Linux 文件系统缓存&#xff09;里发送到网络通道&#xff0c;而不需要经过任何中间缓冲区。这是 Kafka 与其他大部分数据库系统不一样的地方&#…

详解使用SSH远程连接Ubuntu服务器系统

演示环境&#xff1a; 1.Windows10系统 2.VMware Workstation Pro虚拟机 2.Ubuntu16.04.6&#xff08;以上版本通用&#xff09; 回归正题 一、在Ubuntu端&#xff1a; 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输入以下指令 sudo apt-get install ssh2.输入你的ubu…

数据标注对新零售的意义及人工智能在新零售领域的应用?

数据标签对于新零售至关重要&#xff0c;因为它构成了训练和部署人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;模型的基础。在新零售的背景下&#xff0c;数据标签涉及对数据进行分类、标记或注释以使其能够被机器理解的过程。然后&#xff0c;这些…