[Docker实现测试部署CI/CD----自由风格和流水线的CD操作(6)]

12、自由风格的CD操作

        现在要为 GitLab 中当前的项目主干分支 origin/master 上的代码打上一个 Tag,例如 v1.0.0。 然后修改代码后仍提交到 GitLab 的主干分支 origin/master 上,此时再给项目打上一个 Tag, 例如 v2.0.0。这样, hellojenkins 项目的主干分支 origin/master 上就打上了两个 Tag。
        而 Jenkins 可以根据主干分支 origin/master 上代码的不同 Tag 对项目进行分别构建。实现项目的持续交付与持续部署。

发布 V1.0.0 版本

修改代码并推送

在这里插入图片描述

GitLab 中项目打 Tag

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

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

发布 V2.0.0 版本

步骤同上,这里不演示了

在这里插入图片描述

Jenkins 配置 tag 参数

        由于 GitLab 中的项目具有 tag 标签,那么 Jenkins 在进行项目构建时就需要让用户选择准备构建哪个 tag 的项目。所以,需要在 Jenkins 中配置一个Git 参数 tag 作为用户选项。

添加 Git 参数

在这里插入图片描述

在这里插入图片描述

添加 checkout 命令

然后当前页面继续下拉,找到 Build Steps。

在这里插入图片描述

        然后点击左上角的三条杠,拖拽到顶部,git checkout $hjtag表示切换到指定的标签,后面可以看到效果

在这里插入图片描述

修改构建命令配置

        然后当前页面继续下拉,找到 Build Steps 中原来添加的构建命令。在所有涉及镜像的命 令中添加上$hjtag 变量引用。然后应用保存。

在这里插入图片描述

修改 SSH 配置

        然后当前页面继续下拉,找到“构建后操作”中的 Send build artifacts over SSH 中的 Exec command,将原来写死的版本 latest 修改为$hjtag

在这里插入图片描述

部署 v1.0.0

重新构建工程

        任务首页中再次点击 Build with Parameters 构建项目,发现增加了 hjtag 选项。这里选择 V1.0.0 进行构建

在这里插入图片描述

构建结果

Harbor中新增了 v1.0.0 的镜像。

在这里插入图片描述

在目标服务器上新增了 v1.0.0 的镜像,且该容器也运行了起来。

在这里插入图片描述

浏览器访问

在这里插入图片描述

部署 v2.0.0

重新构建工程

        任务首页中再次点击 Build with Parameters 构建项目,发现增加了 hjtag 选项。这里选择V2.0.0进行构建,修改端口号

在这里插入图片描述

在这里插入图片描述

访问

在这里插入图片描述

部署v3.0.0

在这里插入图片描述

在这里插入图片描述

13、流水线任务的Helloworld

        流水线是 Jenkins 对项目构建过程的一种管理方式。其将项目的构建过程按照构建阶段进行非常清晰的划分显示。用户可以通过可视化操作方式来轻松查看、管理构建过程中的各个阶段。

Hello World

新建流水线任务

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击立即构建后,就会看到“阶段视图”。

在这里插入图片描述

修改项目脚本

        为了更好的理解脚本,这里对 hello workd 项目的脚本进行修改。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SCM 方式维护脚本

       SCM(Software Configuration Management)是指软件配置管理,用于管理和协调软件开发过程中的代码、文档和其他相关元素

代码中追加 Jenkinsfile

        每个要构建的项目采用 piple 方式进行构建管理,要求必须要有一个构建脚本,而采用 SCM 脚本维护方式时,默认该脚本文件名为 Jenkinsfile
        在 Idea 中的项目根目录下追加一个名为 Jenkinsfile 的文件。然后再将原来的脚本内容复制到该文件中。为了显示区别,这里对脚本内容进行了简单修改。

pipeline {
    
    
    agent any

    stages {
    
    
        stage('阶段one') {
    
    
            steps {
    
    
                echo '阶段one构建成功 ---> SUCCESS'
            }
        }
        stage('阶段two') {
    
    
            steps {
    
    
                echo '阶段two构建成功 ---> SUCCESS'
            }
        }
        stage('阶段three') {
    
    
            steps {
    
    
                echo '阶段three构建成功 ---> SUCCESS'
            }
        }

    }
}

在这里插入图片描述

提交修改到 GitLab

在这里插入图片描述

        然后在 GitLab 的项目首页中就可看到多了一个 Jenkinsfile 文件。然后再复制该项目的 http 地址。
在这里插入图片描述

Jenkins 配置

       在 Jenkins 中流水线任务的“配置”中,流水线选择 SCM 方式SCM 选择 Git,然后再 将刚才复制的 GitLab 仓库地址粘贴到这里

在这里插入图片描述

重新构建

        重新立即构建后会发现,除了这些阶段名称更新为了修改过的外,还新增了一个新的阶段 Checkout SCM,即从 SCM 中检出脚本

在这里插入图片描述

14、流水线管理 hellojenkins

        现要将之前的 hellojks 项目通过流水线方式进行构建管理。所以,首先需要修改 Idea 中 的 Jenkinsfile 文件内容,然后再提交到 GitLab

pipeline {
    
    
    agent any

    stages {
    
    
        stage('从Gitlab拉取代码') {
    
    
            steps {
    
    
                echo '从Gitlab拉取代码 ---> SUCCESS'
            }
        }
        stage('将项目打为jar包') {
    
    
            steps {
    
    
                echo '将项目打为jar包 ---> SUCCESS'
            }
        }
        stage('代码质量检测') {
    
    
            steps {
    
    
                echo '代码质量检测 ---> SUCCESS'
            }
        }
        stage('构建并推送镜像到Harbor') {
    
    
             steps {
    
    
                echo '构建并推送镜像到Harbor ---> SUCCESS'
            }
        }
        stage('通知目标服务器') {
    
    
             steps {
    
    
                echo '通知目标服务器 ---> SUCCESS'
            }
         }

    }
}

在这里插入图片描述

重新构建

        在 Jenkins 中对 hello_pipeline 任务重新构建。

在这里插入图片描述

从GitLab拉取代码

        定义Git参数,在 Jenkins 中的 pipeline 任务中定义一个 Git 参数,该参数仍为发布的 tag

在这里插入图片描述

在这里插入图片描述

流水线语法

        在 pipeline 脚本文件中如何定义具体的命令语句来实现“从 GitLab 位取代码”“将项目 打为 jar 包”等任务?
        pipeline 脚本文件是具有其特殊的语法的。不过,通过当前 pipeline 任 务中的流水线语法,可自动生成符合 pipeline 脚本语法的脚本语句。

在这里插入图片描述

生成脚本命令

下面要通过流水线语法生成“从 GitLab 拉取代码”的语句。

首先从 GitLab 的项目中复制项目地址。

在这里插入图片描述

        然后在 Jenkins 的流水线语法中选择“checkout:Check out from version control”,并将复 制来的 GitLab 的项目地址粘贴到Repository URL中。

在这里插入图片描述

        点击“生成流水线脚本”,便可以下面的文本框中自动生成相应脚本语句。

在这里插入图片描述

更新 Jenkinsfile

        复制生成的流水线脚本,并将其写入到 Idea 中的 Jenkinsfile 的相应 stage{}中,并提交到 GitLab。

在这里插入图片描述

重新构建

对任务进行重新构建,发现可以对构建的版本进行选择了。

在这里插入图片描述

拉取代码”阶段中点击 Logs,便可看到拉取的日志。

在这里插入图片描述

将项目打为 jar 包

生成脚本命令

        在 Jenkins 中通过流水线脚本语法生成“将项目打为 jar 包”的脚本语句

在这里插入图片描述

更新 Jenkinsfile

        复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。

在这里插入图片描述

重新构建

        对任务进行重新构建,然后便可在最上层的“将项目打为 jar 包”阶段中点击Logs,便 可看到 maven 构建的日志
在这里插入图片描述

代码质量检测

生成脚本命令

        在 Jenkins 中通过流水线脚本语法生成“代码质量检测”的脚本语句。

在这里插入图片描述

更新 Jenkinsfile

        复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。
在这里插入图片描述

重新构建

        对任务进行重新立构建,然后便可在最上层的“通过 SonarQube 进行代码检测”阶段中 点击 Logs,便可看到 SonarQube 代码检测的日志

在这里插入图片描述

        然后在 SonarQube 管理页面中就可看到新增加了一个 hello_pipeline 的项目了。

在这里插入图片描述

构建镜像并推送到 Harbor

Jenkinsfile 中定义环境变量

        在Idea中的Jenkinsfile文件中添加环境变量,这些变量将在后面生成的脚本命令中使用。

 environment {
    
    
        harbor_user='admin'
        harbor_password='Harbor12345'
        harbor_host='192.168.40.138:8888'
        harbor_repo='jks'

    }

生成脚本命令

        在 Jenkins 中通过流水线脚本语法生成“推送镜像到 Harbor”的脚本语句。脚本语句中使用的是 Jenkinsfile 中定义的环境变量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DzTj8Hmi-1691236468832)在这里插入图片描述

注意:这里是target目录下的jar包,没有重新截图了

mv target/*.jar docker/
cd docker
docker build -t ${JOB_NAME}:${ptag} .
docker login -u ${harbor_user} -p ${harbor_password} ${harbor_host}
docker tag ${JOB_NAME}:${ptag} ${harbor_host}/${harbor_repo}/${JOB_NAME}:${ptag}
docker image prune -f
docker push ${harbor_host}/${harbor_repo}/${JOB_NAME}:${ptag}

更新 Jenkinsfile

        复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交。
在这里插入图片描述

重新构建

        对任务进行重新立构建,然后便可在最上层的“构建镜像并推送到 Harbor”阶段中点 击 Logs,便可看到推送镜像到 Harbor 的日志。
在这里插入图片描述

此时在 Jenkins主机中就可看到出现了 hello_pipeline 的镜像。

在这里插入图片描述

        此时查看 harbor 的管理页面,可以看到在 jks 项目中新增加了 hello_pipeline 的仓库, 且仓库中具有 v1.0.0 的镜像
在这里插入图片描述

通知目标服务器

添加端口号参数

        为了使用户可以随时指定容器对外暴露的参数,这里在 Jenkins 当前任务下的“配置” 中“参数化构建过程”中添加一个字符参数

在这里插入图片描述

在这里插入图片描述

生成脚本命令

        在 Jenkins 中通过流水线脚本语法生成“通知目标服务器执行 deploy 脚本”的脚本语句。 选择 sshPublisher:Send build artifacts over SSH,并从中找到目标服务器

在这里插入图片描述

        然后在下面的Exec command中键入要执行的命令,生成流水线脚本。

在这里插入图片描述

deploy.sh $harbor_host $harbor_repo $JOB_NAME $ptag 8080 $export_port

更新 Jenkinsfile

        复制生成的流水线脚本,并将其写入到 Idea 的 Jenkinsfile 的相应 stage{}中,提交到GitLab。

在这里插入图片描述

重新构建

        对任务进行重新构建,然后便可在最上层的“通知目标服务器”阶段中点击 Logs,便可看到推送镜像到 Harbor 的日志。

在这里插入图片描述

在这里插入图片描述

        查看目标服务器中的镜像,发现相应镜像没有从 harbor 上拉取下来。

在这里插入图片描述

其实是双引号变量引起的

在这里插入图片描述

再次重新构建,拉取成功

在这里插入图片描述

浏览器访问成功

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

猜你喜欢

转载自blog.csdn.net/qq_52589631/article/details/132123916
今日推荐