HOW - 用腾讯蓝盾部署一个 Web 应用

目录

  • 一、介绍
  • 二、项目、流水线和 Stage
    • 1. 项目(Project)
    • 2. 流水线(Pipeline)
    • 3. Stage(阶段)
    • 示例:配置一个简单的 CI/CD 流程的基本步骤
    • 总结
  • 三、一条完整的流水线包括什么 Stage
    • 1. 源代码管理(Source Code Management)
    • 2. 构建(Build)
    • 3. 静态分析(Static Analysis)
    • 4. 测试(Test)
    • 5. 部署(Deploy)
    • 6. 通知和报告(Notification & Reporting)
    • 7. 清理(Cleanup)
    • 总结
  • 四、变量配置(前置 Stage)
  • 五、产出物

一、介绍

  • 官方文档

  • Github 开源地址

根据官方介绍:

持续交付强调更快、更可靠、低成本的自动化软件交付,蓝盾流水线(Pipeline)提供可视化、一键式部署服务,和持续集成无缝集成,支持并行部署。

具体功能:
请添加图片描述

二、项目、流水线和 Stage

在腾讯蓝盾(Tencent BlueShield)中,项目流水线Stage是实现持续集成和持续部署的核心概念。了解这些概念可以帮助你更好地配置和管理你的 CI/CD 流程。

1. 项目(Project)

项目是腾讯蓝盾中的基本单位,用于组织和管理 CI/CD 流程。一个项目通常对应于一个软件开发的项目,里面包含了所有相关的代码、构建配置和部署设置。

  • 创建项目:在腾讯蓝盾控制台中,你可以创建一个新的项目,填写项目名称、描述等基本信息。
  • 项目配置:在项目中,你可以配置代码仓库、构建和部署任务等。
  • 管理:在项目中,你可以查看构建和部署历史记录,配置通知,设置权限等。

2. 流水线(Pipeline)

5 分钟读懂 BK-CI 流水线

流水线是腾讯蓝盾中用于定义 CI/CD 流程的结构。一个流水线由多个阶段(Stage)组成,描述了从代码提交到生产环境的整个流程。

  • 创建流水线:在项目中,你可以创建多个流水线。每个流水线都可以有不同的构建和部署配置。
  • 配置流水线:在流水线配置中,你可以设置触发条件、定义构建和部署步骤、配置流水线参数等。
  • 执行流水线:每次代码提交或手动触发时,流水线会按照定义的步骤自动执行。

更多具体的实践内容可以阅读:创建你的第一条流水线

3. Stage(阶段)

Stage(阶段)是流水线中的一个步骤,用于定义特定的 Job 作业。可以说,一个 Stage 由多个 Job 组成,一个 Job 由多个 Task(插件)组成。

具体关系图示如下:
请添加图片描述

一个流水线通常包含多个阶段,每个阶段执行特定的操作,例如构建、测试、部署等。

  • 定义阶段:在流水线中,你可以定义多个阶段,每个阶段可以包含多个任务。
  • 阶段任务:每个阶段中的任务可以包括构建代码、运行测试、部署应用、发送通知等。
  • 阶段配置:你可以为每个阶段配置具体的操作步骤,设置条件和参数。

示例:配置一个简单的 CI/CD 流程的基本步骤

假设你有一个 React 应用,希望配置一个流水线来自动构建和部署应用。以下是配置流程的基本步骤:

  1. 创建项目

    • 登录腾讯蓝盾控制台。
    • 创建一个新项目,命名为“ReactApp”或其他合适的名称。
  2. 配置流水线

    • 在项目中,选择 流水线 标签,点击 创建流水线
    • 命名流水线,例如“DeployToProduction”。
    • 设置流水线触发条件,比如在代码推送到 main 分支时触发。
  3. 定义阶段

    • 在流水线配置中,添加一个新的阶段,例如“Build and Deploy”。
    • 在这个阶段中,配置具体的任务:
      • 构建任务
        • 使用 Node.js 环境,运行 npm installnpm run build 命令来构建应用。
      • 部署任务
        • 使用 FTP、SFTP、SSH 或其他方式将构建文件上传到目标服务器。
  4. 配置阶段任务

    • 构建任务:在构建阶段配置以下步骤:
      npm install
      npm run build
      
    • 部署任务:在部署阶段配置以下步骤(假设使用 SSH 部署):
      rsync -avz --delete ./build/ user@your-server-ip:/path/to/your/deployment/directory
      
  5. 保存并执行流水线

    • 保存流水线配置。
    • 手动触发流水线或等待自动触发,检查构建和部署过程是否正常。

总结

  • 项目:用于组织和管理 CI/CD 流程。
  • 流水线:定义了从代码提交到生产环境的整个 CI/CD 流程,由多个阶段组成。
  • Stage(阶段):流水线中的具体步骤,执行特定的任务,如构建、测试和部署。

通过配置这些元素,你可以实现自动化的构建、测试和部署过程,从而提高开发效率和软件质量。如果需要更详细的操作说明,可以参考腾讯蓝盾的官方文档或获取腾讯云的技术支持。

三、一条完整的流水线包括什么 Stage

在持续集成(CI)和持续部署(CD)流程中,一个完整的流水线通常包括多个阶段(Stage),每个阶段包含多个任务。流水线的设计可以根据具体项目的需求进行调整,但一般来说,一个典型的流水线会包含以下几个主要阶段:

1. 源代码管理(Source Code Management)

目的:获取最新的代码。

  • 任务
    • 从代码仓库拉取最新代码(通常是 git pullcheckout)。
    • 确保工作目录是干净的,避免旧的构建文件影响当前构建。

2. 构建(Build)

目的:编译源代码、生成可执行文件或构建产物。

  • 任务
    • 安装依赖:安装项目所需的所有依赖项。例如,对于 Node.js 项目,运行 npm installyarn install
    • 编译/打包:运行构建命令。例如,对于 React 应用,运行 npm run build 以生成生产环境的静态文件。
    • 生成报告:如果需要,可以生成构建报告。

3. 静态分析(Static Analysis)

目的:分析代码质量,发现潜在问题。

  • 任务
    • 代码检查:运行代码风格检查工具,如 ESLint、Prettier。
    • 安全扫描:扫描代码中可能存在的安全漏洞。
    • 依赖检查:检查项目依赖是否存在已知漏洞。

4. 测试(Test)

目的:运行各种测试,确保代码质量和功能正确。

  • 任务
    • 单元测试:运行单元测试,验证代码的各个单元是否按预期工作。例如,使用 npm test
    • 集成测试:运行集成测试,验证多个组件之间的交互。
    • 端到端测试:运行端到端测试,模拟真实用户行为测试应用的整体功能。
    • 测试报告:生成测试报告和覆盖率报告。

5. 部署(Deploy)

目的:将构建产物部署到目标环境中。

  • 任务
    • 上传文件:将构建产物上传到目标服务器。可以使用 FTP、SFTP、SSH、Docker 等方式。
    • 更新环境:更新服务器上的应用,可能需要重启服务或容器。
    • 配置管理:更新配置文件或环境变量。

6. 通知和报告(Notification & Reporting)

目的:通知相关人员构建和部署的状态。

  • 任务
    • 发送通知:将构建和部署结果发送到 Slack、邮件、或其他通知系统。
    • 生成报告:生成构建和测试的总结报告。

7. 清理(Cleanup)

目的:清理构建过程中产生的临时文件和资源。

  • 任务
    • 删除临时文件:删除构建过程中生成的临时文件和缓存。
    • 归档构建产物:将构建产物归档,备份或清理旧的构建版本。

总结

一个完整的 CI/CD 流水线通常包括以下几个阶段:

  1. 源代码管理:获取最新代码。
  2. 构建:编译和打包代码。
  3. 测试:运行单元测试、集成测试和端到端测试。
  4. 静态分析:分析代码质量和安全性。
  5. 部署:将构建产物部署到目标环境。
  6. 通知和报告:发送构建和部署状态通知。
  7. 清理:清理临时文件和资源。

你可以根据项目的具体需求调整这些阶段和任务。

四、变量配置(前置 Stage)

在流水线执行过程中,前置变量通常用于以下几个方面:

  • 配置:根据环境配置应用的参数。例如,数据库连接字符串、API 密钥等。
  • 安全:使用秘密管理工具来存储和访问敏感信息。确保敏感信息不被泄露。
  • 条件执行:根据变量的值决定是否执行某些任务或阶段。例如,只在特定环境下部署应用。

具体可阅读:使用变量来控制流水线

五、产出物

执行一次流水线构建,会有很多产出物出现,我们按照下面的维度进行了分类:

  • 构件(Artifact) :顾名思义,就是编译或打包之后产生的二进制文件,包括镜像、版本压缩包、IPA 包、APK 包等等,利用插件你可以将构件归档到指定的仓库中。

  • 代码检查报告:如果你的流水线中包含了 CodeCC 代码检查任务插件,那么你的流水线就会多出这样一个代码检查报告页面,该页面数据会随着你的流水线构建执行而不断刷新。

  • 测试报告

  • 安装程序

  • 版本日志

  • 文档

如果想在不同 Job 之间共享产出物,需要用到【Upload】和【Download】插件。

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

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

相关文章

数据库-DML语言-数据操作语言

定义 DML是对表中数据进行操作的语言,涉及的关键字:INSERT UPDATE DELETE INSERT:向表中插入新数据的语句UPDATE:修改表中数据的语句DELETE:删除表中数据的语句 准备工作 USE mydb; 使用mydb库 CREATE TABLE person( 创建表personname VARCHAR(30),age INT…

麒麟v10(ky10.x86_64)升级——openssl-3.2.2、openssh-9.8p1

系统版本: ky10.x86_64 下载安装包并上传 openssh下载地址 https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable openssl下载地址 https://openssl-library.org/source/index.html zlib下载地址 https://zlib.net/fossils/ 上传安装包 备份配置文件 cp -r /etc/ssh /et…

高德地图SDK Android版开发 5 地图交互操作

高德地图SDK Android版开发 5 地图交互操作 前言控件控件介绍接口UiSettingsAMapOptions 示例代码Logo指南针比例尺缩放按钮 效果图 地图手势地图手势方法说明地图手势开关指定屏幕中心点的手势操作 地图手势事件地图点击事件监听接口地图长按事件监听接口地图触摸事件监听接口…

Python 6行代码写北京时间时钟(10帧 可调) 天地良心

今天看到别的大佬用Python写时钟 我密集恐惧症都犯了 十来个定义函数 我看也看不懂 代码还有整整78行 还是在我改良后的 改良前有98行 我删注释 优化函数名(比如把penup改成pu) 这个文件照样有5KB 并且在帧数取决于电脑性能 我运行了一下 电脑都卡出蓝屏了 于是我连夜赶…

云动态摘要 2024-08-12

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 全球加速 GA - 新增“巴西(圣保罗)”、“沙特(利雅得)”接入点 华为云 2024-08-12 全球加速服务新增开通“巴西(圣保罗)”、“沙特&a…

CAN总线-----帧格式

目录 前言 一、CAN总线帧格式分类 1.数据帧(重点) 2.遥控帧 3.错误帧 4.过载帧 5.间隔帧 二、位填充 三、波形实例 前言 本期我们就开始学习CAN总线的帧格式,对应帧格式的话,在前面我们学习I2C协议和SPI协议等协议的时候…

使用功率器件比如MOSFET瞬态热阻曲线计算参数

使用功率器件比如MOSFET瞬态热阻曲线计算参数 1.概述2.查看 ZθJC 图3.使用 ZθJC 图估算结温升4.应用案例5.使用 ZθJC 图估算 MOSFET 峰值电流能力6.应用实例 资料来自网络,仅供学习使用 1.概述 功率 MOSFET 数据表包括归一化瞬态热阻抗图:结至外壳 …

怎么将pdf转为ppt文件?pdf转ppt的8个方法

在诸多职场与学术交流的场合中,我们时常面临将详尽的PDF文件转化为生动且易于编辑的PPT演示文稿的需求。这一转换不仅是为了满足演示时的灵活性,更是为了提升信息传递的效率与观众的理解度。从简单的在线工具到功能全面的专业软件,我们拥有多…

概要设计遇到需求变更,6大应对措施

有效地应对概念设计过程中的需求变更,有助于项目灵活适应市场与用户变化,减少后期调整成本,提升产品竞争力与用户满意度,促进项目顺利推进和高质量交付。未能及时有效应对概念设计中的需求变更,往往会导致项目偏离原定…

“论NoSQL数据库技术及其应用”写作框架,软考高级,系统架构设计师

论文真题 随着互联网web2.0网站的兴起,传统关系数据库在应对web2.0 网站,特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…

[C++] STL (multi)map/(multi)set简介

标题:[C] STL (multi)map/(multi)set简介 水墨不写bug 目录 前言: 一、set简介 1.set简介 2.set的常见用法 二、map简介 1.map简介 2.map使用 三、multiset简介 1.multiset简介 2.multiset使用 四、multimap简介 1.multimap简介 2.multim…

24小时不间断守护:输电线路防山火在线监测装置|防山火利器

24小时不间断守护:输电线路防山火在线监测装置|防山火利器 “一年之计在于秋”虽然传统上强调秋季作为收获与规划的重要时节,但同时也提醒我们,这个季节也伴随着一系列的自然挑战,如火灾风险的增加。针对输电线路而言&#xff0c…

制造业生产管理的困境及MES系统解决方案介绍:盘古信息IMS

在当今竞争激烈的制造业环境中,企业面临着前所未有的生产管理挑战。从计划执行的灵活性不足、过程监控的缺失,到质量控制的挑战、供应链协同的难题,每一个环节都亟需创新与优化。盘古信息MES系统,作为全球领先的制造运营管理工业软…

秋招突击——8/15——知识补充——垃圾回收机制

文章目录 引言正文指针引用可达性分析算法垃圾回收算法标记清除算法标记整理算法复制分代收集 垃圾收集器Serial收集器ParNew并行收集器Parallel Scavenge吞吐量优先收集器Serial Old老年代收集器Parallel old收集器CMS收集器G1收集器(Garbage First垃圾优先&#x…

MySQL:查询(万字超详细版)

💎所属专栏: MySQL 💎1. 单表查询 💎1.1 全列查询和指定列查询 全列查询: select * from exam; 在实际开发中不要使用 * 来进行查询,因为数据库会很大,影响效率 指定列查询: se…

IPC进程间通信

信号 信号是一种终端机制,程序运行到一半的时候接收到了某种通知,程序就会立刻中断运行,转而去处理通知。 登记信号 一个进程只会接收默认的几个信号 如果想要让一个进程接收特定信号的话,必须提前在该进程中登记一下想要接收…

如何进行长截图的两种方法

前言 本文主要讲2种截图方式,分别是谷歌和QQ。 谷歌分为Web端 和 移动端,选一种即可。 第一种:谷歌浏览器控制台自带的 1.先把控制台语言更改为中文,方便查看 ①.按F12,点击设置面板 ②.修改语言为中文并关闭 ③.点击…

2024-08-07升级记录:北斗卫星导航系统轨道信息解释

北斗三号全球星座由地球静止轨道(GEO)、倾斜地球同步轨道(IGSO)、中圆地球轨道(MEO)三种轨道卫星组成,北斗人称这三种卫星为“北斗三兄弟”。 三种轨道区别: 1、GEO卫星 位于距地球约…

MySQL索引的性能优化

1.数据库服务器的优化步骤 在数据库调优中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢&#xf…

腾讯云AI代码助手 —— 编程新体验,智能编码新纪元

阅读导航 引言一、开发环境介绍1. 支持的编程语言2. 支持的集成开发环境(IDE) 二、腾讯云AI代码助手使用实例1. 开发环境配置2. 代码补全功能使用💻自动生成单句代码💻自动生成整个代码块 3. 技术对话3. 规范/修复错误代码4. 智能…