0%

github actions CI 自动编译测试

最近在整一个复合类的项目(cmake项目),期望是跨平台,所以需要在各个平台上编译测试。

但是每次改完代码还要开个虚拟机编译测试,还挺麻烦的,于是试了下 github 的 actions 自动 CI 工具,还挺好的,目前已为项目自动编译 WindowsLinuxMacOS 平台。

cmake 使用

cmake :

那么如何使用这个那么好的功能呢?

其实很简单:

  1. 创建目录 .github/workflows
  2. 创建一个 yml 后缀格式文件,例如 ccpp.yml
  3. 然后将下面内容输入到创建的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
  1. jobs 表示工作任务。
  2. macOS-build:win-build:ubuntu-build: 表示任务标签。
  3. runs-on: 表示所运行的系统:ubuntu-latest,windows-latest,macOS-latest
  4. - name:当前项的别名
  5. run:执行的命令

该文件的作用就是,分别在ubuntuWindows以及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

欢迎 starfork