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

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

中间架构图

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

创建web项目

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

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

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

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!!!!";
    }
}

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

启动测试,访问成功

在这里插入图片描述

Idea提交项目到远程仓库

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

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

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

Idea创建本地库

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

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

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

提交代码到本地库

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

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

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

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

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

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

提交代码到远程库

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

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

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

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

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

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

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

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

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

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

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

此时刷新 GitLab 页面,即可看到推送来的项目。
[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第18张图片

从jenkins拉取代码

新建任务

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

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

jenkins集成gitlab

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

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

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

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

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

立即构建

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

查看控制台输出

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

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

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

[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第27张图片
[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第28张图片

将项目打为jar包

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

Jenkins 配置 mvn 命令

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

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

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

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

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

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

重新构建

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

构建成功

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

        构建成功后进入 jenkins 数据卷目录/var/jenkins_home/workspace/my_hellojks 中可以看 到新增了 target 目录("target" 目录是 Maven 构建工具生成的默认目录,用于存放构建过程中生成的各种输出文件。)。打开 target 目录,可以看到打出的 jar 包。
[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第34张图片

代码质量检测

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

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

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

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

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

构建成功,查看页面
[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第38张图片

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

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

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

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

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

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

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

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

构建镜像启动容器

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

定义 Dockerfile

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

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

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

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

Dockerfile文件内容

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

定义 compose.yml

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

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

services:
  hellojenkins:
    build: ./
    image: hellojenkins
    container_name: myhellojenkins
    ports:
      - 8080:8080

推送到 GitLab

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

再配置构建后操作

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

重新构建

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

        修改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!!!!";
    }
}

立即构建
[Docker实现测试部署CI/CD----自由风格的CI操作[中间架构](4)]_第51张图片

查看
在这里插入图片描述

你可能感兴趣的:(docker,ci/cd,架构)