最近在整一个复合类的项目(cmake
项目),期望是跨平台,所以需要在各个平台上编译测试。
但是每次改完代码还要开个虚拟机编译测试,还挺麻烦的,于是试了下 github 的 actions 自动 CI 工具,还挺好的,目前已为项目自动编译 Windows
、Linux
、MacOS
平台。
cmake 使用
cmake :
那么如何使用这个那么好的功能呢?
其实很简单:
- 创建目录
.github/workflows
- 创建一个
yml
后缀格式文件,例如 ccpp.yml
。
- 然后将下面内容输入到创建的
yml
格式文件里面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| name: C/C++ CI
on: push: branches: [ master,dev ] pull_request: branches: [ master,dev ]
jobs: ubuntu-build:
runs-on: ubuntu-latest
steps: - uses: actions/checkout@v1 - name: configure run: mkdir build-ubuntu && cd build-ubuntu && cmake -DCMAKE_CXX_FLAGS="-Werror" .. - name: build run: cmake --build build-ubuntu
win-build:
runs-on: windows-latest
steps: - uses: actions/checkout@v1 - name: configure run: mkdir build-windows && cd build-windows && cmake .. - name: build run: cmake --build build-windows
macOS-build:
runs-on: macOS-latest
steps: - uses: actions/checkout@v1 - name: configure run: mkdir build-macOS && cd build-macOS && cmake -DCMAKE_CXX_FLAGS="-Werror" .. - name: build run: cmake --build build-macOS
|
jobs
表示工作任务。
macOS-build:
、win-build:
、ubuntu-build:
表示任务标签。
runs-on:
表示所运行的系统:ubuntu-latest
,windows-latest
,macOS-latest
。
- name:
当前项的别名
run:
执行的命令
该文件的作用就是,分别在ubuntu
,Windows
以及macOS
里面编译一边。
比之前自己手动下拉编译简单多了。
bazel
另外,还尝试给项目加上了 bazel
编译:
bazel :
对应的文件可以为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| name: bazel-build CI
on: push: branches: [ master,dev ] pull_request: branches: [ master,dev ]
jobs:
ubuntu-build: name: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v1
- name: run uses: ngalaiko/bazel-action/1.2.1@master with: args: build //...
|
推广
对了,项目地址是:
https://github.com/ClangTools/clangTools
欢迎 star
、 fork
。