CI/CD(基于ESP-IDF)

主要参考资料
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: 定义了部署步骤所需的环境变量。

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

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

相关文章

电子阅览室解决方案

一.方案概述 “电子阅览室”概念一经提出,就得到了广泛的关注,纷纷组织力量进行探讨、研究和开发,进行各种模型的试验。随着数字地球概念、技术、应用领域的发展,电子阅览室已成为数字地球家庭的成员,为信息高速公路提…

奥利奥罚单背后的启示:企业合规与反垄断的边界

在全球化的经济环境中,企业面临着激烈的市场竞争。为了在竞争中脱颖而出,一些企业可能会采取不正当的竞争手段,如垄断、价格歧视等。然而,这些行为往往会触犯反垄断法规,给企业带来严重的法律风险。最近,奥…

Activity详解,用最通俗的语言告诉你什么是Activity(一)

大家好,我是小布丁。 今天还是分享Android基础知识,有Android基础的朋友都知道,Activity作为Android四大组件之一,掌管可视化界面。也是大多数人刚接触Android学的第一课。下面我来带大家学习/复习这部分知识,请大家不…

海尔智家牵手罗兰-加洛斯,看全球创牌再升级

晚春的巴黎西郊,古典建筑群与七叶树林荫交相掩映,坐落于此的罗兰加洛斯球场内座无虚席。 来自全球各地的数万观众,正与场外街道上的驻足者们一起,等待着全世界最美好的网球声响起…… 当地时间5月26日,全球四大职业网…

大数据技术分享 | Kylin入门系列:基础介绍篇

Kylin入门教程 在大数据时代,如何高效地处理和分析海量数据成为了企业面临的挑战之一。Apache Kylin作为一个开源的分布式分析引擎,提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,使得对超大规模数据集的分析变…

数据结构——二叉树的实现

文章目录 一、二叉树概念的回顾二、二叉树结构的定义三、二叉树的创建方法一、写个创建结点的函数然后手动链接起来创建结点的函数手动链接 方法二、通过前序遍历的数组的方式构建二叉树创建的函数声明创建函数的定义 四、 二叉树的遍历前序遍历中序遍历后序遍历层序遍历 五、二…

基于python实现生命游戏

文章目录 一、生命游戏是什么二、生命游戏规则解释1.相邻细胞2.细胞状态 三、代码实现1.邻居细胞2.更新状态 四、整体代码 一、生命游戏是什么 生命游戏(Game of Life)是由英国数学家约翰何顿康威在1970年发明的一种细胞自动机(Cellular Aut…

SOL 交易机器人基本知识

有没有可以盈利的机器人? 是的,各行各业都有许多盈利机器人。在金融领域,交易机器人被广泛用于自动化投资策略并根据预定义的算法执行交易。这些机器人可以分析市场趋势并做出快速决策,从而可能带来可观的回报。同样,在…

JAVA:多线程常见的面试题和答案

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、并发编程三要素? 原 子 性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。可 见 性 可见性指多…

智能仓储物流系统(WMS)系列-货品与分类管理

好的应用系统应是细分简单,界面简洁易操作,程序代码简洁易懂的。

【傻呱呱】python安装phook3(Windows端)

前期准备 swig程序Visual Studio C 构建工具 配置swig程序 将下载好的“swig-4.2.1”压缩包解压到C盘从C盘打开“swig-4.2.1”文件夹并复制文件夹路径 在开始菜单里搜索“环境变量”,点击“编辑系统环境变量” 点击“环境变量” 找到“path”并双击 点击“新建” …

MFC工控项目实例一主菜单制作

1、本项目用在WIN10下安装的vc6.0兼容版实现。创建项目名为SEAL_PRESSURE的MFC对话框。在项目res文件下添加相关256色ico格式图片。 2、项目名称:密封压力试验机 主菜单名称: 系统参数 SYS_DATA 系统测试 SYS_TEST 选择型号 TYP_CHOICE 开始试验 TES_STA…

汽车电子学习【车载网络CAN/LIN】

车载网络CAN/LIN知识总结 STM32F1开发板测试 STM32测试程序 /** CAN 通信报文内容设置*/ void CAN_SetMsg(void) { #if CAN_STDTxMessage.StdId 0x12;TxMessage.IDE CAN_ID_STD; #elseTxMessage.ExtId 0x1314; //使用的扩展IDTxMessage.IDE CAN_ID_EXT; //扩展模式 #…

MySQL注入 — Dns 注入

DNS注入原理 通过子查询,将内容拼接到域名内,让load_file()去访问共享文件,访问的域名被记录此时变为显错注入,将盲注变显错注入,读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,…

AI大模型日报#0529:杨红霞创业入局“端侧模型”、Ilya左膀右臂被Claude团队挖走

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE 4.0)、“零一万物”(Yi-34B)生成了今日要点以及每条资讯的摘要。欢迎阅读&#xff0…

计算机毕业设计 | SpringBoot+vue仓库管理系统(附源码)

1,绪论 1.1 项目背景 随着电子计算机技术和信息网络技术的发明和应用,使着人类社会从工业经济时代向知识经济时代发展。在这个知识经济时代里,仓库管理系统将会成为企业生产以及运作不可缺少的管理工具。这个仓库管理系统是由:一…

美团拼好饭小程序mtgsig1.2分析(补环境分析)

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章未…

AUS GLOBAL 荣获 Brokersview 颁奖盛典多项殊荣

2024年1月31日在迪拜 Sheikh Zayed Rd - Trade Centre - Trade Centre 1 举行的 Brokersview 颁奖盛典上,AUS GLOBAL(澳洲环球)再次展现了其在金融行业的卓越实力,并荣获多项殊荣。 AUS GLOBAL 作为一家全球领先的金融服务提供商…

【Linux进程篇】Linux进程管理——进程创建与终止

W...Y的主页 😊 代码仓库分享💕 目录 进程创建 fork函数初识 写时拷贝 fork常规用法 fork调用失败的原因 进程终止 进程退出场景 _exit函数 exit函数 return退出 进程创建 fork函数初识 在linux中fork函数时非常重要的函数,它从已…

【蓝桥杯嵌入式】 第六届国赛

目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程,先配置资源 --- 勾选完选项一…