> 技术文档 > [经验分享]ESP-IDF:如何向ESP Component Registry上传自己的组件或从Github拉取组件_esp registry

[经验分享]ESP-IDF:如何向ESP Component Registry上传自己的组件或从Github拉取组件_esp registry

IDE:VSCode
System:Win11


阅读本博客前你需要先知道什么是组件,并且会创建自己的组件
文中的命令在ESP-IDF终端执行

有的时候希望自己写的组件可以上传到云端管理版本和存储,这样非常的方便开源或者团队内的人使用自己的组件进行开发。这个时候有以下两种方式可以选择

方式一:从 Git 仓库拉取组件

  • 在组件管理器描述文件 idf_component.yml 中,按照下方示例,添加组件在 Github 的地址
    dependencies: esp-gsl: git: https://github.com/leeebo/esp-gsl.git version: \"*\" button: git: https://github.com/espressif/esp-iot-solution.git path: components/button version: \"*\" ```
  • 这个方法非常简单,编译后拉取的组件会存在 managed_component 文件夹内,和其它引用的官方组件一起被调用

方式二:向ESP Component Registry上传自己的组件
好处是所有人都可以方便的在ESP Component Registry中搜索到你的组件。主要分为两个步骤,规范你的组件和发布在 ESP-Registry

  1. 开发和规范组件
  • 创建一个组件目录,和 ESP-IDF 组件要求一致,编写对应的 CMakeLists.txt 文件
    idf.py create-component test_cmp

    运行命令后,组件的本地文件结构将如下所示:

    .└── test_cmp ├── CMakeLists.txt ├── include │ └── test_cmp.h └── test_cmp.c
  • 添加 idf_component.yml 文件,添加组件信息,IDF 版本要求,指定依赖的其他组件
    version: \"0.0.1\"description: \"This is a test component\"url: \"https://mycomponent.com\" # The homepage of the component. It can be a GitHub repository page.
  • 添加 license.txt 文件,添加组件的许可证信息。组件发布后,其他人可以发现、下载和使用它。包含许可证对于正确使用至关重要。
  • 添加 README.md 文件,添加组件的简介、简单的使用说明
  • 添加 test_apps 目录,添加组件的测试用例
  • 最后的目录应如下所示
    .└── test_cmp ├── CMakeLists.txt ├── idf_component.yml ├── include │ └── test_cmp.h ├── LICENSE ├── README.md └── test_cmp.c
  1. 发布在 Github 仓库
  • 建议不要直接发布到 ESP-Registry ,先发布到 Github 方便管理
  • 然后可以将 idf_component.yml 里的 url 更新为组件的 GitHub 链接
  • 如果涉及到版本更新,记得一定要在 idf_component.ymlversion 和后面发布时的版本号更新成一致的,否则组件下载时会检测版本错误,导致组件无法被下载
  1. 注册 ESP-Registry
  • ESP-Registry 是乐鑫提供的中央仓库,为开发者提供了一个便捷的方式来发现和下载用于工程项目中的组件
  • 在 ESP-Registry 注册账号 - 通过 Github 账号授权就可以在 ESP-Registry 上完成注册
  • 注册账号后,点击右上角用户名,选择 Tokens
  • 在这个界面点击 Create 就可以创建一个 Token
  1. 发布在 ESP-Registry
  • 要将组件发布到 ESP 组件注册表(生产注册表),需要先通过 CLI 登录。要登录到 registry 服务器,请使用以下命令:
    compote registry login --profile \"default\" --registry-url \"https://components.espressif.com\" --default-namespace <your_github_username>

    此命令将打开一个浏览器窗口,您可以在其中使用 GitHub 帐户进行身份验证。登录后,您将被重定向到显示您的 Token 的页面。Create new access token 后将其复制并粘贴到终端中,注意 Scopes of the token 这里需要选择 userwrite:components 两个。

  • 成功登录后,使用以下命令上传:
    compote component upload --name test_cmp

    我更推荐用这个,可以设置版本号和组件名称,更新组件时也可以使用这个命令:

    idf.py upload-component --namespace <your_github_username> --name <your_componentname> --version 1.0.0
  • 上传成功后终端返回如下(以我的为例)
    NOTICE: Saving component archive to \"C:\\Users\\69180\\Desktop\\esp_lcd_gc9d01\\dist\\esp_lcd_gc9d01_0.0.2.tgz\"NOTICE: Uploading archive C:\\Users\\69180\\Desktop\\esp_lcd_gc9d01\\dist\\esp_lcd_gc9d01_0.0.2.tgzNOTICE: Wait for processing, it is safe to press CTRL+C and exitYou can check the state of processing by running CLI command \"compote component upload-status --job=9******e-b**2-4**6-8**5-3**********7 \"NOTICE: The uploaded component was successfully processed. It may take up to 5 minutes for the new version to be available globally.View at: https://components.espressif.com/components/hwzlovedz/esp_lcd_gc9d01/versions/0.0.2
  • 然后需要等一段时间,就可以使用如下命令安装你的组件了
    idf.py add-dependency \"your_github_username/your_componentname^1.0.0\"

相关引用

  • IDF组件管理器:封装IDF组件
  • 进阶开发:组件管理和使用