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

    乐鑫SDK的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: 定义了部署步骤所需的环境变量。
  • 相关阅读:
    TypeScript 初识笔记
    ADS8866 ADC转换芯片驱动调试
    报白是什么意思?入驻抖音小店哪些类目需要报白?报白如何操作?
    【Node.js】深度解析常用核心模块-path模块
    C语言中操作符的详细介绍
    TLS 1.0 至 1.3 握手流程详解
    Apache POI 使用
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java教务管理系统75850
    Java:SpringBoot整合JDBC实现对数据库的CURD增删改查
    idea + Docker-Compose 实现自动化打包部署(仅限测试环境)
  • 原文地址:https://blog.csdn.net/qq_40773212/article/details/134939588