CI/CD(基于ESP-IDF)

news2024/11/15 9:09:47

主要参考资料
B站乐鑫信息科技《【乐鑫全球开发者大会】DevCon23 #15 |通过 CI/CD 进行流水线开发》
pytest-embedded乐鑫文档: https://docs.espressif.com/projects/pytest-embedded/en/latest/api.html

目录

  • CI/CD简介
  • 乐鑫内部CI/CD测试
  • GitLab CI/CD
  • GitHub Actions

CI/CD简介

CI(Continuous Integration,持续集成)/CD(Continuous Delivery,持续交付/Continuous Deployment,持续部署)属于DevOps的概念,指将传统开发过程中的代码构建、测试、部署以及基础设施配置等一系列流程的人工干预转变为自动化。使用CI/CD,代码经由开发人员更改后,可进行自动化测试并完成交付和部署。恰当的CI/CD管道可使计算机停机时间最小化,从而更快发布代码。

乐鑫内部CI/CD测试

在这里插入图片描述

  • idf-build-apps
    idf-build-apps的作用只有两个,找到编译文件和编译。
  • pytest-embeded

GitLab CI/CD

stages:
  - build
  - deploy

before_script:
  - echo "Preparing the environment..."

build_job:
  stage: build
  script:
    - echo "Building the project..."
    - make build

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the project..."
    - make deploy
  • stages定义了两个阶段:build和deploy。这表示流水线将按照这个顺序先执行build阶段,然后执行deploy阶段。
  • before_script是所有作业执行之前的钩子(hook),在这里输出了准备环境的信息。
  • build_job是build阶段的一个作业,它将执行script部分定义的命令,比如回显"Building the project…"和执行make build命令。
  • deploy_job是deploy阶段的一个作业,它也将执行script部分定义的命令,比如回显"Deploying the project…"和执行make deploy命令。

GitHub Actions

GitHub的CI/CD功能是通过GitHub Actions实现的。GitHub Actions允许你在GitHub仓库中直接构建、测试和部署代码。与GitLab CI/CD类似,你可以定义多个工作流程(workflows)和作业(jobs),并在不同的阶段执行不同的任务。

name: CI/CD Workflow

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build project
      run: ./gradlew build

  deploy:
    needs: build
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && github.ref == 'refs/heads/main'
    
    steps:
    - uses: actions/checkout@v2
    - name: Set up Node.js
      uses: actions/setup-node@v1
      with:
        node-version: '12'
    - name: Deploy project
      run: npm run deploy
      env:
        CI: true
  • name: 定义了工作流程的名称。
  • on: 指定触发工作流程的事件,这里使用了push和pull_request。
  • jobs: 包含了一个或多个作业的定义。
    • build: 定义了build作业,它将在Ubuntu最新版本上运行。
      • steps: 包含了作业需要执行的步骤。
      • uses: 使用了actions市场中的actions/checkout@v2动作来检出代码。
      • name和run: 定义了步骤的名称和要运行的命令。
    • deploy: 定义了deploy作业,它依赖于build作业的成功完成(needs: build),并且只有在推送到main分支时才会运行(if条件)。
      • env: 定义了部署步骤所需的环境变量。

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

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

相关文章

Thingsboard规则链:Customer Attributes节点详解

在物联网(IoT)平台Thingsboard的规则引擎中,Customer Attributes节点扮演了至关重要的角色,它允许用户访问和操作与客户(Customer)实体相关的属性数据。这些属性可以是静态信息,如客户名称、联系信息,或是动…

【PHP项目实战训练】——laravel框架的实战项目中mysql数据库的数据的数据在blade.php中展示

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

Kafka原生API使用Java代码-生产者-异步发送消息回调

文章目录 1、异步发送消息&回调1.1、pom.xml1.2、KafkaProducer1.java 1、异步发送消息&回调 回调就是接收kafka的响应 1.1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&q…

创建QT项目后只有一个pro文件(已解决) QT Creator

1. 问题回顾 工程仅有xx.pro文件 工程文件夹里面却有文件 这种情况并非创建工程失败&#xff0c;而是没有配置好文件 界面左下角 2. 解决方法 点击项目模式 配置不了 有点生气。。卸载了 重新安装&#xff0c;这次选择了多个kit勾选 回到项目模式&#xff0c;点进去 发现这…

短视频矩阵系统源码---开发BS架构B/S(Browser/Server Architecture)架构

短视频矩阵系统源头开发------- 第一款叫做筷子科技&#xff0c;这个筷子科技剪辑和发布都是没有问题的&#xff0c;但是前一段时间他的剪辑发个公告&#xff0c;每个账号只能发两条&#xff0c;另外它的唯一缺点就是它成本比较高的&#xff0c;入门门槛应该在12800左右&#…

视频汇聚EasyCVR视频监控平台GA/T 1400协议特点及应用领域解析

GA/T 1400协议&#xff0c;也被称为视图库标准&#xff0c;全称为《公安视频图像信息应用系统》。这一标准在公安系统中具有举足轻重的地位&#xff0c;它详细规定了公安视频图像信息应用系统的设计原则、系统结构、视频图像信息对象、统一标识编码、系统功能、系统性能、接口协…

大规模服务治理中etcd的实践与深度应用

导读&#xff1a;随着企业对于服务治理的日益重视&#xff0c;特别是在云原生和微服务架构的广泛应用下&#xff0c;百度小程序团队基于大模型服务治理的实战经验&#xff0c;结合分布式开源KV产品etcd&#xff0c;分享了其核心技术Raft与boltdb的实现原理&#xff0c;并深入剖…

文件上传漏洞简介

目录 漏洞原理 漏洞危害 利用场景 检测方法 防御方法 绕过手段 前端JS绕过 构造可解析后缀 修改Content-Type&#xff08;MIME&#xff09; 大小写绕过 文件头绕过 图片马 截断与特殊文件名 其他绕过 尝试绕过的步骤 漏洞原理 原理 攻击者构造恶意文件进行上传…

RTPS协议之Behavior Module

目录 交互要求基本要求RTPS Writer 行为RTPS Reader行为 RTPS协议的实现与Reader匹配的Writer的行为涉及到的类型RTPS Writer实现RTPS WriterRTPS StatelessWriterRTPS ReaderLocatorRTPS StatefulWriterRTPS ReaderProxyRTPS ChangeForReader RTPS StatelessWriter BehaviorBe…

keil4和5版本代码编译错误问题

需求: 在工作中, 遇到了keil4工程的老代码, 需要烧录到板子中. 问题: 电脑中只有keil5软件, 使用keil5软件打开, 编译后报了一堆错, 还是官方库文件的错误, 这就是版本不兼容了. 解决方法: 下载keil4软件, 不要和keil5放到一起. 进行如下操作. 0. 根据如下链接来下载keil4.7…

拥塞控制的微观行为与力学解释

本文以 tcptrace 图为基&#xff0c;描述传输的微观行为&#xff0c;并给出一个初中几何描述的压水井模型。 统计复用网络的拥塞控制&#xff0c;宏观看 inflight&#xff0c;微观看 pacing rate&#xff0c;宏观大方向不对&#xff0c;微观再正确也不行。 而网络的统计动力学…

推荐丨一键申请SSL证书,让网站实现HTTPS访问!

申请HTTPS证书可以简化为以下几个直接步骤&#xff0c;以便您能快速理解和操作&#xff1a; 1. 确定证书类型&#xff1a; - 单域名证书&#xff1a;适用于一个特定域名。 - 通配符证书&#xff1a;适用于同一主域名下的所有子域名。 - 多域名证书&#xff1a;覆盖多个不同的域…

polarctf靶场[reverse]shell、PE结构、拼接

[reverse]shell 考点&#xff1a;脱壳 将所解压的文件拖入DIE有无有壳&#xff0c;文件类型 发现有UPX壳&#xff0c;是32位的文件&#xff0c;先脱壳 用FFI工具脱壳 将脱壳后的程序用32位IDA进行反汇编 点开_main_0函数进行查看 看到flag&#xff0c;&#xff08;F5&#…

【PostgreSQL17新特性之-事务级别超时参数transaction_timeout】

PostgreSQL数据库里有多个和会话相关的参数&#xff0c;PostgreSQL17-beta1版本新增了一个transaction_timeout参数&#xff0c;来限制事务的持续时间。 当前的一些和会话相关的超时参数如下 -----------------------------------------------------------------------------…

【学习Day2】计算机基础

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 1.4 校验码 奇偶校验 ● 奇偶校验码的编码方法是&#xff1a; 由若干位有效信息的头部或者…

PowerPivot-跨表取值

在PowerPivot中&#xff0c;跨表取值通常涉及创建关系和使用DAX&#xff08;数据分析表达式&#xff09;函数。 以下是一些基本步骤和常用的DAX函数&#xff0c;帮助你在PowerPivot中实现跨表取值&#xff1a; 步骤1&#xff1a;创建关系 加载数据&#xff1a;确保你已将需要…

FreeRTOS【9】计数信号量使用

1.开发背景 FreeRTOS 基于上一篇了解了二值信号量后&#xff0c;如果需要设计需要累计信号量的次数就不行了&#xff0c;所以有了计数信号量&#xff0c;可以设置计数的最大值。同样&#xff0c;可以理解二值信号量是计数信号量的一种特例&#xff0c;即二值信号量是计数信号量…

利用QtScrcpy与Power Automate 实现微信群批量自动清理

Power Automate 一、Power Automate window系统自带软件 在开始使用Power Automate之前&#xff0c;需要熟悉它的基本概念和功能。Power Automate的核心概念包括触发器、操作和连接器。触发器是指触发自动化流程的事件&#xff0c;操作是指在自动化流程中执行的操作&#xff0…

数据结构(十)图

文章目录 图的简介图的定义图的结构图的分类无向图有向图带权图&#xff08;Wighted Graph&#xff09; 图的存储邻接矩阵&#xff08;Adjacency Matrix&#xff09;邻接表代码实现 图的遍历深度优先搜索&#xff08;DFS&#xff0c;Depth Fisrt Search&#xff09;遍历抖索过程…

ai写作助手有哪些,5款强大的ai写作工具为你所用

在科技日新月异的时代&#xff0c;人工智能已经悄然走进我们的生活&#xff0c;为我们带来了诸多便利。其中&#xff0c;AI写作助手作为一种创新的工具&#xff0c;正在改变着我们的写作方式。它们不仅能够提供创意灵感&#xff0c;还能帮助我们提高写作效率&#xff0c;让文字…