platformio 对git和github的支持特别好,我们可以很方便的使用github的一些工具
Github Actions 介绍
官方介绍 GitHub Actions 是一个持续集成和持续交付 (CI/CD) 平台,允许您自动化构建、测试和部署管道。您可以创建工作流程来构建和测试对存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
简单的说: 你可以利用github action脚本实现一些自动化的操作 - 检查是否能编译 - 生成bin文件上传到release - 检查代码是否符合指定风格 - 等等
Github Actions 使用
Github Action顾名思义肯定是基于github的,所以一切操作都是在github仓库上进行的。
文件目录
在git工程根目录下创建在.github文件夹 在.github下创建workflows文件夹 workflows文件夹中创建工作流文件
对于轻量级应用目录如下 因为我们workflow并不复杂,这里将action文件夹省略了
工程根目录
├── .github/
│ └──workflows/
│ └── your-workflow.yml
│
├── README.md
└── LICENSE
.yml就是我们要执行的任务配置文件
yml配置文件编写
示例
检查platform工程是否能过编译
# 编译PlatformIO项目的github action配置
name: Build PlatformIO project
on: [push] # 触发条件,这里是代码被推送到仓库时
jobs:
build:
runs-on: ubuntu-latest # 运行环境,这里是最新的Ubuntu系统
steps:
- name: Checkout code # 检出代码
uses: actions/checkout@v2
- name: Setup PlatformIO # 设置PlatformIO
uses: n-vr/setup-platformio-action@v1
- name: Build PlatformIO project # 构建PlatformIO项目
run: pio run
自动生成bin文件,并发布release
该脚本可以在推送含有“vXXX”标签时自动生成并发布bin文件
使用前需要将 【附件】merge_bins.py 文件放在工程根目录下
例如我在本地创建了一个“v1.2.3”的标签
git tag -a v1.2.3 -m "new version"
推送标签
git push --tags
之后即可在github查看状态

脚本文件
# 编译PlatformIO项目并生成bin固件推送到Release的github action
# 使用前需要修改下面的文件路径,以及工程名,以及bin文件名
name: Build bin release
on: [push] # 触发条件,这里是代码被推送到仓库时
jobs:
build-and-release:
runs-on: ubuntu-latest # 运行环境,这里是最新的Ubuntu系统
permissions:
contents: write
steps:
- name: Checkout code # 检出代码
uses: actions/checkout@v2
- name: Setup PlatformIO # 设置PlatformIO
uses: n-vr/setup-platformio-action@v1
- name: Build # 构建项目
run: |
pio run
- name: Create Release and Upload Bin # 创建Release并上传.bin文件
uses: softprops/action-gh-release@v1
# 如果是标签推送,则执行Release操作
if: startsWith(github.ref, 'refs/tags/')
with:
#修改下面的文件路径↓↓↓↓↓↓
files: .pio/build/"工程名"/bin文件.bin # 上传的文件路径
#修改上面的文件路径↑↑↑↑↑↑
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 使用GitHub提供的token
注意action是在一个虚拟机中创建一个platformio环境进行的编译,有些库和软件包如果没有指定版本可能会导致一些意想不到的的bug