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

news2024/11/14 9:02:52

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: hellojenkins
    container_name: myhellojenkins
    ports:
      - 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.coloradmin.cn/o/833041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android性能优化—内存优化

一、App内存组成以及管理 Android 给每个 App 分配一个 VM ,让App运行在 dalvik 上,这样即使 App 崩溃也不会影响到系统。系统给 VM 分配了一定的内存大小, App 可以申请使用的内存大小不能超过此硬性逻辑限制,就算物理内存富余&…

WPF中自定义Loading图

纯前端方式&#xff0c;通过动画实现Loading样式&#xff0c;如图所示 <Grid Width"35" Height"35" HorizontalAlignment"Center" VerticalAlignment"Center" Name"Loading"><Grid.Resources><DrawingBrus…

react icon ant简单使用

refer&#xff1a; 文字提示 Tooltip - Ant Design 1.首先保证已经引入了Ant 2.在组件&#xff08;页面&#xff09;引入tooltip import { Form, Tooltip } from antd; 3.在合适的位置使用tooltip&#xff1a; <span>寿命 <Tooltip title"这是寿命的说明&quo…

静/动态网页、Web1.0/2.0、安装tomcat8

一、简述静态网页和动态网页的区别。 静态页面&#xff1a;请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览器进行解析&#xff0c;显示的页面。在网站设计中&#xff0c;纯粹HTML格式的网页&#xff08;可以包含图片、视频JS (前端功能实现&#xff09;、CSS …

app自动化测试

在实习过程中&#xff0c;我接触到了一些SDL安全提测的工作。原来我是学web端渗透比较多的&#xff0c;移动端这块基本没怎么试过手&#xff0c;结果刚开始一直踩坑&#xff0c;连抓包都抓不到(&#xff34;▽&#xff34;)。 下面记录下我遇到的部分问题和解决方法&#xff0c…

uni.chooseLocation 安卓端 无法显示地址列表?

uni.chooseLocation 安卓端 无法显示地址列表&#xff1f; 高德官方申请Android服务平台时&#xff0c;提示填写SHA1值&#xff0c;填写之后发现还是不生效&#xff1f; 这里有个巨坑&#xff0c;如果你真的去填写SHA1值&#xff0c;你会发现地址列表还是不会展示&#xff0c;需…

编写一个最简单的Linux服务端和客户端程序

2023年8月3日&#xff0c;周四下午 这篇文章我从下午开始写了几个小时&#xff0c; 这篇文件基本总结了我今天学到的知识&#xff0c; 在写这篇文章的过程中灵感不断涌现、想明白了很多知识点&#xff0c;非常酣畅淋漓。 什么叫做深度学习&#xff1f;这就是深度学习&#…

仅一个月作品获推荐550.51w,视频号内容创作出现新趋势

7月初&#xff0c;视频号上线直播切片授权功能&#xff0c;创作者经授权可对直播内容进行二次加工上传至短视频平台&#xff0c;对新进入的普通创作者来说&#xff0c;切片授权无疑是一种很好的起号策略&#xff0c;吸引了大量用户。 视频号不断丰富内容生态&#xff0c;大批创…

Flink作业调度的9种状态

1.什么是作业调度 Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot&#xff0c;每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成&#xff0c;比如并行度为 n 的 MapFunction 和 并行度为 n 的…

WPF上位机8——C#与MySQL

ADO.NET 数据库连接 数据插入、删除、更改 数据查询 带单个参数 带多个参数 基于特性反射DAO通用操作库 ORM对象关系映射 数据库中表映射为实体类 调用ORM框架中提供的新增方法&#xff1a;构建sql语句 创建枚举 根据枚举类型创建sql语句 调用 实体限定 生成参数列表 生成插入…

【项目 进程13】2.28共享内存(1) 2.29共享内存(2)

文章目录 2.28共享内存&#xff08;1&#xff09;共享内存&#xff08;效率最高&#xff0c;比内存映射更高。因为内存映射还需一个文件做载体&#xff09;共享内存使用步骤共享内存操作函数头文件 2.29共享内存&#xff08;2&#xff09;共享内存相关问题共享内存和内存映射的…

MongoDB文档-基础使用-在客户端(dos窗口)/可视化工具中使用MongoDB基础语句

阿丹&#xff1a; 本文章将描述以及研究mongodb在客户端的基础应用以及在spring-boot中整合使用mongodb来完成基本的数据增删改查。 先放官方的文章 MongoDB CRUD操作 - MongoDB-CN-Manual 本文章分为&#xff1a; 在客户端&#xff08;dos窗口&#xff09;/可视化工具中使用…

工作流管理系统如何提升生产力

工作流管理工具通过提供无缝沟通和简化流程来提高团队的生产力。如果部署得当&#xff0c;工作流管理可以长期获得回报。 以下是工作场所管理系统如何提高员工的生产力&#xff1a; 1、无需更多的状态更新会议 工作流管理系统使您的员工无需跟踪电子邮件和讨论线程来评估项目…

【Pytorch】下载CIFAR10数据集报错: urllib.error.URLError: <urlopen error name: https>

在使用Pytorch 下载CIFAR10的时候&#xff0c;遇到一个报错&#xff0c; 可能是网络特别慢导致的&#xff0c;一般情况下都会遇到这个报错。 解决办法&#xff1a; 1、到官网直接下载这个压缩包&#xff0c;解压。 http://www.cs.utoronto.ca/~kriz/cifar.html 解压后&#x…

一套ai绘图软件教程帮你打开创作新篇章

在一个寂静的艺术工作室里&#xff0c;住着一个渴望成为画家的年轻人&#xff0c;名叫艾米。她梦想能够运用自己的创造力和手艺&#xff0c;创作出令人叹为观止的艺术作品。然而&#xff0c;面对空白的画布&#xff0c;她感到无从下手&#xff0c;不知道该从何处开始。每次她试…

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot&#xff08;x&#xff0c;y&#xff0c;kind&#xff0c;data&#xff09; #lineplot&#xff08;x&#xff0c;y&#xff0c;data&#xff09; #直方图 #displot&#xff08;data&#xff0c;rug&#xff09; #条形图 #barplot&…

MONAI的测试与使用(一)

MONAI的测试与使用&#xff08;一&#xff09; 一.Transform 的分类二 普通变换和字典变换的联系与区别三 加载与显示图像 一.Transform 的分类 具体API函数请参考文档&#xff1a;https://docs.monai.io/en/latest/transforms.html 二 普通变换和字典变换的联系与区别 普通变…

DAY2,C高级(shell脚本的使用)

1.今日思维导图&#xff1b; 2.递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位&#xff1b; #include<my_head.h>void Output(int num) {if(num 0)return;Output(num/10);printf("%d ",num%10);}int main(int argc, const char *argv[]) {in…

软件测试自动化selenuim的常用方法和属性总结

selenuim其实主要就是使用webdriver实例对象的方法和属性。 常用属性 1 driver.current_url 当前网页的请求地址 2 driver.current_window_handle 句柄&#xff0c;用于页面切换 3 driver.page_source 网页源代码 4 driver.title 网站的title&#xff0c;tab栏上显示的内容…

『Linux学习笔记』Linux服务器硬件配置查看

Linux服务器硬件配置查看 文章目录 一. 操作系统1.1. 发行版本1.2. 查看内核版本 二. CPU2.1. CPU统计信息2.2. CPU型号2.3. 查看物理CPU数目2.4. 每个物理CPU的核数2.5. 查看逻辑CPU的个数 三. GPU四. 内存4.1. 内存使用情况4.2. 内存硬件情况4.3. 查看内存使用信息 五. 硬盘…