RT-Thread Linux CI Environment
一个用于嵌入式实时操作系统 RT-Thread 进行持续集成的容器化环境。
GitHub Action
https://github.com/marketplace/actions/rt-thread-ci-action
这是一个用于国产实时操作系统RT-Thread的持续集成GitHub Action
name: RT-Thread
on:
push:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: scons
uses: actions/checkout@v3
- name: Setup RT-Thread
uses: maikebing/rt-thread_linux_env@v1
with:
TARGET: 'mdk5'
CPPCHECK: '--enable=all --std=c99 applications/'
使用步骤:
- 拉取并启动镜像
maikebing/rt-thread_linux_env
- 代码克隆至已经启动的容器中。
- 代码目录
pkgs --update
- 可以使用
cppcheck --enable=all --std=c99 applications/
检查代码 - 直接 scons , 比如
scons --target=mdk5
- 成果物打包 如果使用mdk5 则文件名 一般为rtthread.bin , 根据你实际情况 在相关的 ci 中设置就好。
现成的范本:
Azure Pipelines
在代码目录新建 azure-pipelines.yml , 拷贝下面的内容,保存即可。
container:
image: maikebing/rt-thread_linux_env:latest
options: --hostname container-test
steps:
- script: if [ ! -d ~/.env ]; then ln /env ~/.env -s;fi
displayName: "Init env"
- script: pkgs --printenv;pkgs --list;pkgs --update
displayName: "Checkout all packages"
workingDirectory: $(Build.SourcesDirectory)
- script: cppcheck --enable=all --std=c99 applications/
displayName: "Static Code Analysis"
workingDirectory: $(Build.SourcesDirectory)
- script: scons --target=mdk5
workingDirectory: $(Build.SourcesDirectory)
displayName: "Build MDK5 Project"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
TargetPath: '$(Build.SourcesDirectory)\rtthread.bin'
ArtifactName: 'rt-thread'
publishLocation: 'Container'
StoreAsTar: true
已知问题:
pkgs —update 执行失败但却没有导致脚本执行失败。
欢迎关注公众号

感谢 @aozima 打赏 。
挺好的,要是再结合QEMU和utest,就能自动跑测试用例了。
@aozima
https://github.com/maikebing/rt-thread_linux_env/issues/1
可以使用
无法往串口输入内容。 如何常程序知道是测试模式?
如果上述问题解决, 可以打包模拟环境在容器中。
@maikebing
可以参考 rt-thread 官方的:https://github.com/armink/UtestRunner