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

目录

  • 12、自由风格的CD操作
    • 发布 V1.0.0 版本
      • 修改代码并推送
      • GitLab 中项目打 Tag
    • 发布 V2.0.0 版本
    • Jenkins 配置 tag 参数
      • 添加 Git 参数
      • 添加 checkout 命令
      • 修改构建命令配置
      • 修改 SSH 配置
    • 部署 v1.0.0
      • 重新构建工程
      • 构建结果
    • 部署 v2.0.0
      • 重新构建工程
      • 访问
    • 部署v3.0.0
  • 13、流水线任务的Helloworld
    • Hello World
      • 新建流水线任务
      • 修改项目脚本
    • SCM 方式维护脚本
      • 代码中追加 Jenkinsfile
      • 提交修改到 GitLab
      • Jenkins 配置
      • 重新构建
  • 14、流水线管理 hellojenkins
    • 重新构建
    • 从GitLab拉取代码
      • 流水线语法
      • 生成脚本命令
      • 更新 Jenkinsfile
      • 重新构建
    • 将项目打为 jar 包
      • 生成脚本命令
      • 更新 Jenkinsfile
      • 重新构建
    • 代码质量检测
      • 生成脚本命令
      • 更新 Jenkinsfile
      • 重新构建
    • 构建镜像并推送到 Harbor
      • Jenkinsfile 中定义环境变量
      • 生成脚本命令
      • 更新 Jenkinsfile
      • 重新构建
    • 通知目标服务器
      • 添加端口号参数
      • 生成脚本命令
      • 更新 Jenkinsfile
      • 重新构建

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 上拉取下来。

在这里插入图片描述

其实是双引号变量引起的

在这里插入图片描述

再次重新构建,拉取成功

在这里插入图片描述

浏览器访问成功

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机成下一个土木了吗?

前些年抓住了互联网行业的红利期,进入大厂的员工,基本可以实现在一线城市买房扎根。 但反观现在,“被毕业、逃离互联网、躺平算了...”却成了这个行业的主旋律,不少人在谈论润到国企和外企去了,也放低了对工资的预期&…

Java SpringBoot集成Activiti7工作流

Activiti7 Java SpringBoot集成Activiti7工作流介绍项目集成引入依赖YML配置文件配置类 启动项目生成表结构Activiti的数据库支持 Activiti数据表介绍项目Demo地址: Java SpringBoot集成Activiti7工作流 本文项目Demo地址附在文章后方 官网主页:http://a…

【C++】右值引用

文章目录 右值引用值得形式返回对象的缺陷移动语句移动赋值 右值引用 能够取地址、能够被修改的被称之为左值。 不能够取地址、不能够被修改、以及将亡值被称之为右值。 普通类型的变量,因为有名字,可以取地址,都认为是左值。const修饰的常量…

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述

Flutter游戏引擎Flame系列笔记 1.Flame引擎概述 - 文章信息 - Author: 李俊才(jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132119035 【介绍】…

ThinkPHP v6.0.8 CacheStore 反序列化漏洞

漏洞说明 1. 漏洞原理:ThinkPHP 6.0.8 CacheStore 会触发POP利用链子,造成任意命令执行 2. 组件描述: ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架 3. 影响版本:V6.0.8 漏洞复现 1. 环境安…

QtAV for ubuntu16.04

下载ubuntu https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso 下载ffmpeg https://ffmpeg.org/download.html 下载QtAV https://github.com/wang-bin/QtAV/releases 更新 sudo apt update 安装库 sudo apt-get install libglu1-mesa-dev freeglut3-dev…

解密爬虫ip是如何被识别屏蔽的

在当今信息化的时代,网络爬虫已经成为许多企业、学术机构和个人不可或缺的工具。然而,随着网站安全防护的升级,爬虫ip往往容易被识别并屏蔽,给爬虫工作增加了许多困扰。在这里,作为一家专业的爬虫ip供应商,…

K8s中的Secret

Secret作用:加密数据存在etcd里面,让pod容器以挂载Volume方式进行访问。场景:凭据

【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

MySql的Windows安装指南

目录 一、MySQL的4大版本 二、软件的下载 三、MySQL8.0 版本的安装 四、配置MySQL8.0 五、配置MySQL8.0 环境变量 六、登录验证 一、MySQL的4大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持&#xff…

5个顶级的开源有限元分析软件

每当我参加数值分析课程的教学时,都会回顾有限元方法的基础知识,很自然地就会出现使用哪种软件的问题。 以下讨论基于三个基本考虑: 在实际应用中,很少有人从头开始编写 FEM 代码。商业 FEM 软件通常在某些预定义的情况下非常易于…

EventBus 开源库学习(三)

源码细节阅读 上一节根据EventBus的使用流程把实现源码大体梳理了一遍,因为精力有限,所以看源码都是根据实现过程把基本流程看下,中间实现细节先忽略,否则越看越深不容易把握大体思路,这节把一些细节的部分再看看。 …

STM32的电动自行车信息采集上报系统(学习)

摘要 针对电动自行车实时监管不便的问题,设计了一种基于STM32的电动自行车信息采集系统,通过获取电池、位置和行驶状态信息并上报到服务器中,实现实时监管。 通过多路串口请求电池、行驶状态和位置信息,以并发方式进行数据接收、…

机器学习概述及其主要算法

目录 1、什么是机器学习 2、数据集 2.1、结构 3、算法分类 4、算法简介 4.1、K-近邻算法 4.2、贝叶斯分类 4.3、决策树和随机森林 4.4、逻辑回归 4.5、神经网络 4.6、线性回归 4.7、岭回归 4.8、K-means 5、机器学习开发流程 6、学习框架 1、什么是机器学习 机器…

Linux命令200例:用Look一个进行文本搜索工具

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已…

Web压测工具http_load原理分析

01、前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ 这个软件一直在保持着更新(不像webbench,已经是十年的老古董了。 webbench的源…

Pandas

系列文章目录 第一章 python数据挖掘基础环境安装和使用 第二章 Matplotlib 第三章 Numpy 文章目录 系列文章目录一、介绍1.1 为什么用Pandas?1.2 核心数据结构1.3 DataFrame1.3.1 结构1.3.2 常用属性1.3.3 常用方法1.3.4 DataFrame索引的设置修改行列索引值重设索…

小白电脑装机(自用)

几个月前买了配件想自己装电脑,结果最后无法成功点亮,出现的问题是主板上的DebugLED黄灯常亮,即DRAM灯亮。对于微星主板的Debug灯,其含义这篇博文中有说明。 根据另一篇博文,有两种可能。 我这边曾将内存条和主板一块…

gin框架学习

文章目录 配置go环境实现一个简单的web响应服务验证功能gin增加页面以及传递数据 配置go环境 去go官网下载对应的版本 go下载地址 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 我们可以编辑 ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末…

【新版系统架构补充】-传输介质、子网划分

传输介质 双绞线:无屏蔽双绞线UTP和屏蔽双绞线STP,传输距离在100m内 网线安装标准: 光纤:由纤芯和包层组成,分多模光纤MMF、单模光纤SMF 无线信道:分为无线电波和红外光波 通信方式和交换方式 单工…