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

在这里插入图片描述

其实是双引号变量引起的

在这里插入图片描述

再次重新构建,拉取成功

在这里插入图片描述

浏览器访问成功

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

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

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

相关文章

Jmeter函数助手(一)随机字符串(RandomString)

一、目标 实现一个请求单次调用,请求体里多个集合中的相同参数(zxqs)值随机从序列{01、02、03、03、04、05、06、07、08}中取 若使用CSV数据文件、用户参数等参数化手段,单次执行请求,请求体里多个集合中的相同参数&a…

传染病学模型 | Python实现基于使用受控SIR模型分析SARS-CoV-2疫情

效果一览 文章概述 传染病学模型 | Python实现基于使用受控 SIR 模型分析 SARS-CoV-2 疫情 源码设计 import jax.numpy as np import

webpack基础知识七:说说webpack proxy工作原理?为什么能解决跨域?

一、是什么 webpack proxy,即webpack提供的代理服务 基本行为就是接收客户端发送的请求后转发给其他服务器 其目的是为了便于开发者在开发模式下解决跨域问题(浏览器安全策略限制) 想要实现代理首先需要一个中间服务器,webpac…

Python 开发工具 Pycharm —— 使用技巧Lv.2

pydoc是python自带的一个文档生成工具,使用pydoc可以很方便的查看类和方法结构 本文主要介绍:1.查看文档的方法、2.html文档说明、3.注释方法、 一、查看文档的方法 **方法1:**启动本地服务,在web上查看文档 命令【python3 -m…

基于STM32CubeMX和keil采用通用定时器中断实现固定PWM可调PWM波输出分别实现LED闪烁与呼吸灯

文章目录 前言1. PWM波阐述2. 通用定时器2.1 为什么用TIM142.2 TIM14功能介绍2.3 一些配置参数解释2.4 PWM实现流程&中断2.4.1 非中断PWM输出(LED闪烁)2.4.2 中断PWM输出(LED呼吸灯) 3. STM32CubeMX配置3.1 GPIO配置3.2 时钟配置3.3 定时器相关参数配置3.4 Debug配置3.5 中…

ESP32-C2开发板 ESP8684芯片 兼容ESP32-C3开发

C2是一个芯片采用4毫米x 4毫米封装,与272 kB内存。它运行框架,例如ESP-Jumpstart和ESP造雨者,同时它也运行ESP-IDF。ESP-IDF是Espressif面向嵌入式物联网设备的开源实时操作系统,受到了全球用户的信赖。它由支持Espressif以及所有…

2023/8/5总结

主要实现了: 举报: 内容管理搜索的实现 管理员界面 还有消息没写,以及一些小细节

Linux修改系统语言

sudo dpkg-reconfigure locales 按pagedown键,移动红色光标到 zh_CN.UTF-8 UTF-8,空格标记*号(没标记下一页没有这一项),回车。 下一页选择 zh_CN.UTF-8。 如果找不到 dpkg-reconfigure whereis dpkg-reconfigure …

HTML 初

前言 HTML的基本骨架 HTML基本骨架是构建网页的最基本的结果。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

iOS——Block回调

先跟着我实现最简单的 Block 回调传参的使用&#xff0c;如果你能举一反三&#xff0c;基本上可以满足了 OC 中的开发需求。已经实现的同学可以跳到下一节。 首先解释一下我们例子要实现什么功能&#xff08;其实是烂大街又最形象的例子&#xff09;&#xff1a; 有两个视图控…

互感和励磁电感(激磁电感)的关系

互感器&#xff0c;变压器&#xff0c;他们之间有着千丝万缕的联系&#xff0c;自感&#xff0c;互感&#xff0c;激磁电感&#xff0c;漏感、耦合系数、理想互感器、理想变压器&#xff0c;这些东西的概念理解和相互之间的关系式。都搞明白了吗&#xff1f;

elasticsearch 将时间类型为时间戳保存格式的时间字段格式化返回

dsl查询用法如下&#xff1a; GET /your_index/_search {"_source": {"includes": ["timestamp", // Include the timestamp field in the search results// Other fields you want to include],"excludes": []},"query": …

外国机构在中国境内提供金融信息服务23家许可名单

6月30日&#xff0c;国家互联网信息办公室公布23家外国&#xff08;境外&#xff09;机构在中国境内提供金融信息服务许可名单&#xff0c;如下&#xff1a;

LeetCode643. 子数组最大平均数 I

题干 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组&#xff0c;并输出该最大平均数。 任何误差小于 10^-5 的答案都将被视为正确答案。 示例1&#xff1a; 输入&#xff1a;nums [1,12,-5,-6,50,3], k 4 输出&am…

前端小练习:案例4.3D图片旋转展示(旋转木马)

一.效果预览图 二.实现思路 1.实现旋转木马效果的第一步是先准备好自己需要的图片&#xff0c;创建html文件 2.旋转木马的实现&#xff0c;关键点在3D形变和关键帧动画。 3.步骤&#xff0c;定义一个div使其居中&#xff0c;&#xff0c;把图片放进div盒子里&#xff0c;因为图…

Vue系列第七篇:Element UI之el-main,el-table,el-dialog,el-pagination,el-breadcrumb等控件使用

本篇实现主页面功能&#xff0c;包括主页面排版布局&#xff0c;学生管理模块实现&#xff0c;后台接口实现等功能。 目录 1.运行效果 1.1登录页面 1.2主页面 1.3学生管理 - 信息列表 1.4学生管理 - 信息管理 1.5学生管理 - 作业列表 1.6学生管理 - 作业管理 2.前端代码…

npm install时出现的问题Failed at the node-sass@4.14.1 postinstall script

从阿里云上拉取下来项目后&#xff0c;首先使用npm install 命令进行安装所需依赖&#xff0c;意想不到的事情发生了&#xff0c;报出了Failed at the node-sass4.14.1 postinstall script&#xff0c;这个问题&#xff0c;顿时一脸懵逼&#xff1b;询问前端大佬&#xff0c;给…

危大工程智慧工地源码,微服务+Java+Spring Cloud +UniApp +MySql 物联网、人工智能、视频AI分析

一套智慧工地管理平台源码&#xff0c;PC端移动APP端可视货数据管理端源码 智慧工地可视化系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术&#xff0c;通过工地中台、三维建模服务、视频AI分析服务等技术支撑&#xff0c;实现智慧工地高精度动态仿真&a…

【新人指南】给新人软件开发工程师的干货建议

在我是新人时&#xff0c;如果有前辈能够指导方向一下&#xff0c;分享一些踩坑经历&#xff0c;或许会让我少走很多弯路&#xff0c;节省更多的学习的成本。 这篇文章根据我多年的工作经验&#xff0c;给新人总结了一些建议&#xff0c;希望对你会有所帮助。 写好注释 没有注…

ELFK——ELK结合filebeat日志分析系统(2)

目录 一、filebeat 二、ELFK 1.原理简介 2.在ELK基础上部署filebeat 一、filebeat Filebeat&#xff0c;轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat&#xff0c;并指定目录与日志格式&#xff0c;Filebeat 就能快速收集数据&#xff0c;并…