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

news2024/12/26 9:29:32

目录

  • 一、介绍
  • 二、项目、流水线和 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.coloradmin.cn/o/2044474.html

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

相关文章

29岁的服务员到网络安全工程师,大龄转行成功逆袭

大龄转行,一直在网络上备受争议。 转换职业赛道,从学习能力和试错成本角度来看,确实越早行动越有利,而大龄转行无疑伴随着较高的风险。 然而,大龄转行并非无路可走:古有苏老泉,年近三十方才开始…

数据结构之---堆(2)

一、出堆 出堆是指将堆顶数据出堆。出堆完成后要保证剩余数据还是满足原来堆的性质。所以我们把堆顶数据和堆底最后一个数据交换,取出新堆底数据,之后通过向下调整算法将剩下的数据重新排列成一个堆。 大堆经过出堆操作得出的数据是升序的 小堆经过出堆…

聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 8月15日消息 一加13配置细节曝光 谷歌首推人工智能手机 MONA M03汽车即将上市 iPhone SE 4将升级8GB运行内存 R…

redis事件机制

redis服务器是一个由事件驱动(死循环)的程序,它总共就干两件事: 文件事件:利用I/O复用机制,监听Socket等文件描述符发生的事件,如网络请求时间事件:定时触发的事件,负责完成redis内部定时任务&…

MCU复位RAM会保持吗,如何实现复位时变量数据保持

在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢? MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…

Linux知识复习第5期

目录 1、实验环境 2、日志存放 3、自定义日志采集路径 1、实验环境 hostnamectl hostname node1.zx.org # 设置主机名 vim /etc/hosts # 域名解析修改 hostname -I # 显示ip地址 2、日志存放 /var/log/messages 系统服务日志,常规…

快速MD5强碰撞生成器:fastcoll

问:可以制作两个具有相同哈希值的不同文件吗? 答:可以。 在密码学中,哈希函数将输入数据转换成固定长度的字符串。但由于输入的无限性和输出的固定性,不可避免地会有不同输入产生相同的哈希值,这就是碰撞。…

【ITK】图像分割算法:FastGrowCut详解

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享图像分割算法FastGrowCut的详细解析过程,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录…

单元训练09:定时器实现秒闪功能

蓝桥杯 小蜜蜂 单元训练09:定时器实现秒闪功能 #include "stc15f2k60s2.h"#define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 & 0x1f; \}#define L1 0xFE; // 定义L1 …

线程锁(2)

线程的资源回收 int pthread_join(pthread_t thread, void **retval); 功能: 等待线程结束 参数: thread --- 线程tid retval --- 用来保存,退出状态值,所在空间的地址 返回值: 成功 0 失败 错误…

[240816] 【超级大牛】kovidgoyal:calibre 和 kitty 的作者 | Go 发布 1.23.0 版本

目录 【超级大牛】kovidgoyal:calibre 和 kitty 的作者calibrekitty Go 发布 1.23.0 版本Go 1.23 版本更新说明 【超级大牛】kovidgoyal:calibre 和 kitty 的作者 calibre calibre 是由 github.com/kovidgoyal 使用 C 和 Python 开发的跨平台电子书管理…

开源AI智能名片系统与高级机器学习技术的融合应用:重塑商务交流的未来

摘要:在数字化浪潮的推动下,人工智能(AI)技术,尤其是机器学习领域的快速发展,正深刻改变着各行各业的面貌。开源AI智能名片系统作为这一变革的先锋,通过集成并优化多种高级机器学习技术&#xf…

Word文档怎么批量加密保存

Word的文件批量设置密码是工作中比较常用的功能,它可以对文档进行保护,平时我们都是单个对文件进行加密,那么多个文件如何一键批量设置,下面通过一些方法,我们可以进行批量设置密码保存起来。 一、使用Word软件内置功能…

郑州市政协副主席翟政莅临中创算力开展重点企业实地调研

2024年8月13日,围绕“落实中央和省委、市委政协工作会议精神情况”郑州市政协副主席翟政一行莅临河南中创算力信息科技有限公司进行实地调研。中创算力董事长许伟威全程陪同。此次调研不仅是对中创算力在数字经济领域发展成就的肯定,更是对中创如何积极响…

《机器学习by周志华》学习笔记-决策树-03连续值与缺失值

1、连续值处理 到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。 1.1、概念 取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对…

VSCode自动保存文件

off:关闭自动保存,这是默认选项afterDelay:会每隔若干秒保存一次OnFocusChange: 编辑器是去焦点时自动保存文件,比如说你打开了多个文件,你编辑好了A,然后切换到B文件,那么此时A文件…

信息流广告预估技术在美团外卖的实践

本文整理自美团技术沙龙第81期《美团在广告算法领域的探索及实践》(B站视频)。文章首先介绍了美团信息流广告业务以及预估技术的现状,然后重点分享了信息流广告预估在美团的具体实践,围绕决策路径、超长超宽建模和全还原建模等多个维度进行了分享&#x…

Taos 常用命令工作笔记(二)

最近测试创建一个涛思的数据库和一堆表进行测试,通过json配置文件配置字段的类型、名称等,程序通过解析json文件的配置,动态创建数据库的表。 其中表字段为驼峰结构的规则命名,创建表也是成功的,插入的测试数据也是成功…

实用性强的高安全涉密内网文件传输工具

在数字化浪潮中,数据安全和合规性成为企业和组织极为关注的焦点,特别是在处理敏感和机密信息时。高安全级别的内网文件传输工具因此变得至关重要,它们是保护数据不被未授权访问或泄露的关键技术之一。这类工具不仅需要满足严格的安全标准&…

zdpgo_gin_jwt 专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架

zdpgo_gin_jwt 专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架 使用教程 快速入门 package mainimport ("log""net/http""os""time"gin "github.com/zhangdap…