- Notifications
You must be signed in to change notification settings - Fork10
RT-Thread/pkgs-test
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
jobs:pkgs-test:uses:RT-Thread/pkgs-test/.github/workflows/pkgs-action.yml@mainwith:# 指定测试的rt-thread内核版本 使用空格分隔# branch "branch:[branch]" tag "tag:[tag]"# 默认值为 "branch:master tag:v4.1.1"rt-thread-versions:"branch:master tag:v4.1.1"# 指定测试的bsp 使用空格分隔# [bsp]:[toolchain]# 默认值为 "qemu-vexpress-a9:sourcery-arm stm32/stm32h750-artpi:sourcery-arm k210:sourcery-riscv-none-embed"bsps:"qemu-vexpress-a9:sourcery-arm stm32/stm32h750-artpi:sourcery-arm k210:sourcery-riscv-none-embed"# 指定测试的软件包 使用空格或者换行符分隔 仅仅test-specific-pkgs为true时可用。# 多行输入可以这样输入# pkgs: |# hello# LiteOS-SDK# 默认值是 "hello"pkgs:"hello"# 用于测试指定的软件包,用于对rt-thread内核更新的检查,通过参数pkgs指定软件包。# 默认值为false,不指定。test-specific-pkgs:false# 测试package时是否测试latest版本,false时测试latest版本。# 默认值为 falsepackage-test-nolatest:false# 测试全部的package,true为测试全部。# 默认值为 falsepackage-test-all:false# 是否执行check-errors,true为检查。# 默认值为 truecheck-errors:true# 是否从githubpages下载旧的测试结果,并将新的测试结果与其合并,true为下载并合并。# 默认值为 falsepackage-append-res:false# 旧测试结果的githubpages地址。# 默认值为 https://rt-thread.github.io/packages/pages-url:https://rt-thread.github.io/packages/# 是否将测试结果发布到githubpages,true是发布。# 默认值为 falsedeploy-pages:false
目前可以在软件包索引仓库和软件包仓库使用pkgs-test来测试软件包的编译情况。
软件包索引仓库里面目前有两个功能,一个是当发生改动的时候测试改动的软件包,另外就是定时测试全部的软件包。
这里是Packages仓库的软件包测试workflow文件其中的一个job,目的是当发生改动的时候测试改动的软件包。
change:if:${{ github.event_name == 'pull_request' || github.event_name == 'push'}}uses:RT-Thread/pkgs-test/.github/workflows/pkgs-action.yml@mainwith:package-append-res:truedeploy-pages:true
这里使用if进行了判断,当workflow的触发事件是pull_request或者push的时候,执行change这个job。
传入的参数有两个,package-append-res用来开启从github pages下载旧的测试结果并且与新的合并,deploy-pages用来开启将测试结果发布到github pagses。
这里我举出两个jobs的例子,测试master内核版本下两个bsp的软件包编译情况。
master-stm32h750-artpi-test:if:${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'}}uses:RT-Thread/pkgs-test/.github/workflows/pkgs-action.yml@mainwith:bsps:stm32/stm32h750-artpi:sourcery-armrt-thread-versions:branch:masterpackage-append-res:truepackage-test-all:truedeploy-pages:truecheck-errors:falsemaster-k210-test:if:${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'}}needs:master-stm32h750-artpi-testuses:RT-Thread/pkgs-test/.github/workflows/pkgs-action.yml@mainwith:bsps:k210:sourcery-riscv-none-embedrt-thread-versions:branch:masterpackage-append-res:truepackage-test-all:truedeploy-pages:truecheck-errors:false
测试全部软件包的触发事件有两个,schedule定时测试和workflow_dispatch手动触发,这里也是使用if来判断的。
这里注意一下,测试全部软件包需要一个接着一个按顺序测试,不能并行进行测试,不然发布测试结果会产生冲突,workflow文件也用了concurrency这个参数来确保每次只有一个workflow在运行,让其余的进行等待。
concurrency:group:pkgs-testcancel-in-progress:false# wait for finish.
然后解释一下传入的参数。
- bsps指的就是测试的bsp和其使用的工具链,用冒号进行分隔。
- rt-thread-versions指的就是内核的版本,branch和tag有两种不同的输入方法
branch:master tag:v4.1.1
- package-append-res表示的是从github pages下载旧的测试结果并且与新的合并。
- package-test-all就是最主要的一个参数,表示测试全部软件包。
- deploy-pages表示发布测试结果到GitHub pages。
- check-errors表示关闭错误检查,这里是因为主要目的是发布测试结果,所以用不需要检查是否有软件包没有通过编译测试。
软件包仓库的使用方法比较简单,不需要输入任何参数,它的测试过程和本地测试基本上一致。
这里有一个例子,https://github.com/RT-Thread-packages/hello
它的workflow文件是这样的。
name:RT-Thread_Packages_Teston:[push, pull_request]jobs:pkgs-test:uses:RT-Thread/pkgs-test/.github/workflows/pkgs-action.yml@main
注意事项:
- 本测试框架暂时只使用在 linux 电脑上,不支持 Windows,但 Windows 的 wsl2 暂时测试通过,但不排除有什么隐藏问题
- 本测试框架使用 gcc 进行编译,不支持 gcc 的 bsp 将不会通过测试
用户使用前应使用如下命令安装 pip 依赖
pip install scons==4.4.0 requests tqdm wget dominate PyGithub pytz
其命令行参数如下所示
--config
加载用户配置文件 默认 config.json
--pkg
测试单独软件包 xxx:xxx
--nolatest
编译内容是否不包含 latest 版本
-j
同时编译的作业数量。默认 16
- 可直接使用 python3 pkgs-test.py 执行 config.json 中的配置文件来进行默认 hello 软件包的测试
- 用户也可更改 config.json 文件中的 pkgs 字段来测试其他软件包
- 也可通过 --config 指定一个配置文件进行测试
- 可以通过 config subparser 对配置文件进行配置
- 也可以通过 check subparser 检查测试结果
- 软件包开发者:测试软件包所支持的 bsp、rtt 版本
- 软件包版本发布测试
- 可以对指定软件包版本,进行所支持的 bsp、rtt 版本测试
python3pkgs-test.py--pkg=hello:v1.0.0
- 可以对指定软件包版本,进行所支持的 bsp、rtt 版本测试
- 软件包 master 测试 ci
- 可以在更新软件包代码之后,自动对 master 版本进行所支持的 bsp、rtt 版本测试
python3pkgs-test.py--pkg=hello:latest
- 可以在更新软件包代码之后,自动对 master 版本进行所支持的 bsp、rtt 版本测试
- 软件包的所有版本测试
- 可以对指定软件包的所有版本,进行所支持的 bsp、rtt 版本测试
python3pkgs-test.py--pkg=hello
- 可以对指定软件包的所有版本,进行所支持的 bsp、rtt 版本测试
- 开发者所有软件包测试
- 可以对指定软件包集合的所有软件包版本,进行所支持的 bsp、rtt 版本测试首先改动 config.json 中的 pkgs 字段,例如您要测试 hello1 hello2 两个软件包,要把 pkgs 字段改为
"pkgs":["hello1","hello2"]
之后使用下面的命令python3pkgs-test.py
- 可以对指定软件包集合的所有软件包版本,进行所支持的 bsp、rtt 版本测试首先改动 config.json 中的 pkgs 字段,例如您要测试 hello1 hello2 两个软件包,要把 pkgs 字段改为
- 软件包版本发布测试
- 只测试 hello 的 v1.0.0 版本等同于配置文件中的
python3 pkgs-test.py --pkg=hello:v1.0.0
"pkgs":["hello:v1.0.0"],
- 测试多个软件包(修改配置文件中的 pkgs 字段)
"pkgs":["pkg1","pkg2","pkg3",],
- 设置rt-thread内核版本
- 单个版本
python pkgs-test.py config --rtthread=branch:master
- 多个版本
python pkgs-test.py config --rtthread="branch:master tag:v4.1.1"
- 单个版本
- 设置bsp
- 单个版本
python pkgs-test.py config --bsps=qemu-vexpress-a9:sourcery-arm
- 多个版本
python pkgs-test.py config --rtthread="qemu-vexpress-a9:sourcery-arm stm32/stm32h750-artpi:sourcery-arm"
- 单个版本
- 指定配置文件
python pkgs-test.py config --rtthread=branch:master --file=config.json
- 指定软件包
python pkgs-test.py config --pkgs="hello"
- 检查自动生成的测试结果
python pkgs-test.py check
- 指定文件路径
python pkgs-test.py check --file='pkgs_res_single.json'