本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

。ctest --output-on-failure .。preset设置预设,详见下方预设部分。
dependencies_debian要在容器中安装的项目依赖项(Debian包),以空格分隔。
working-directory将此目录用作cmake的源目录。主要用于CMake项目位于仓库子目录中的情况。
cmakeflags传递给cmake的标志。例如-DSOME_OPTION=On,用于向CMakeLists.txt传递选项。
build_command自定义构建命令。默认是make VERBOSE=1。
test_command自定义测试命令。未使用预设时,默认是ctest --output-on-failure .。
post_command测试后运行的自定义命令。未使用预设时,默认为空。
cmake是一个非常通用的工具,给定适当的参数可以完成多种不同任务。为了简化矩阵构建(matrix builds),ghaction-cmake提供预设,用于为特定模式配置这些选项。
可用的预设包括:
cppcheck:运行cppcheck静态分析。
cmakeflags附加-DCMAKE_C/CXX_CPPCHECK=cppcheck。iwyu:运行include-what-you-use静态分析。
cmakeflags附加-DCMAKE_C/CXX_INCLUDE_WHAT_YOU_USE=iwyu。install:测试安装。
cmakeflags附加'-DCMAKE_INSTALL_PREFIX'。make install作为测试。find显示所有已安装文件。clang-tidy:运行clang-tidy静态分析。
cmakeflags附加-DCMAKE_C/CXX_CLANG_TIDY=clang-tidy。clang-sanitize-<sanitizer>:使用Clang sanitizers之一编译并运行测试。
cmakeflags附加-DCMAKE_C/CXX_COMPILER=clang/clang++ -DCMAKE_C/CXX_FLAGS=-fno-omit-frame-pointer -fsanitize=<sanitizer>。valgrind:使用Valgrind运行测试。
ctest -DExperimentalMemCheck --output-on-failure .。coverage:运行覆盖率测试。
cmakeflags附加-DCMAKE_C/CXX_FLAGS=--coverage。lcov -c -d . -o lcov.info。此预设可与上传覆盖率数据到在线服务(如codecov和coveralls)的GitHub Action配合使用。下方示例展示了如何实现。
下表总结了各预设的具体更改:
| 预设 | cmake | test | post |
|---|---|---|---|
| cppcheck | -DCMAKE_C/CXX_CPPCHECK=cppcheck | (删除) | |
| iwyu | -DCMAKE_C/CXX_INCLUDE_WHAT_YOU_USE=iwyu | (删除) | |
| install | -DCMAKE_INSTALL_PREFIX=/tmp/_install | make install | find /tmp_install -type f |
| clang-tidy | -DCMAKE_C/CXX_CLANG_TIDY=clang-tidy | (删除) | |
| clang-sanitize-<sanitizer> | -DCMAKE_C/CXX_COMPILER=clang/clang++ | ||
| valgrind | -DExperimentalMemCheck | ||
| coverage | -DCMAKE_C/CXX_FLAGS=--coverage | lcov -c -d . -o lcov.info |
请注意,预设会覆盖默认值,而其他更具体的输入(build_command、test_command、post_command)会覆盖预设。
以下工作流展示了如何在矩阵作业中使用预设:
--- name: CI on: [push, pull_request] jobs: # 使用环境变量的常规C构建,使用两种编译器: build_using_compiler_in_environment: strategy: matrix: compiler: - gcc - clang runs-on: ubuntu-latest # 可使用cmakeflags,或直接使用常规环境变量(GitHub Action已支持): env: - CC: ${{ matri***piler }} steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 # 使用cmakeflags的常规C构建,使用两种编译器: build_using_compiler_in_cmakeflags: strategy: matrix: compiler: - gcc - clang runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # 此示例使用适当的cmakeflags - uses: docker://lpenz/ghaction-cmake:v0.10 with: cmakeflags: ${{ format('-DCMAKE_C_COMPILER={0}', matri***piler) }} # 使用codecov的覆盖率测试: codecov: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 with: preset: coverage # ghaction-cmake可与codecov提供的GitHub Action配合使用: - uses: codecov/codecov-action@v1 with: fail_ci_if_error: true # 使用coveralls的覆盖率测试: coveralls: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 with: preset: coverage # 若传递path-to-lcov,ghaction-cmake可与coveralls提供的GitHub Action配合使用: - uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: lcov.info # 静态分析工具: linters: strategy: matrix: preset: [ cppcheck, iwyu, clang-tidy ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 with: preset: ${{ matrix.preset }} # 使用多种sanitizers和valgrind的测试: test: strategy: matrix: preset: - clang-sanitizer-address - clang-sanitizer-memory - clang-sanitizer-undefined - clang-sanitizer-dataflow - clang-sanitizer-safe-stack - valgrind runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 with: preset: ${{ matrix.preset }} # 测试安装: install: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: docker://lpenz/ghaction-cmake:v0.10 with: preset: install
注意,上述文件将静态分析工具与sanitizers分开,但实际上它们可放在同一个矩阵作业中,因为其他参数相同。
此GitHub Action实际上是一个Docker镜像,可在本地甚至travis-ci中使用。为此,首先从Docker Hub下载镜像:
docker pull lpenz/ghaction-cmake:v0.10
然后,在项目目录中运行容器,例如:
docker run --rm -t -u "$UID" -w "$PWD" -v "${PWD}:${PWD}" -e INPUT_PRESET=valgrind lpenz/ghaction-cmake:v0.10
需注意,Action参数通过大写环境变量传递,前缀为INPUT_。
以下.travis.yml在travis-ci中运行相同内容:
--- language: generic jobs: include: - install: docker pull lpenz/ghaction-cmake:v0.10 - script: docker run --rm -t -u "$UID" -w "$PWD" -v "${PWD}:${PWD}" -e INPUT_PRESET=valgrind lpenz/ghaction-cmake:v0.10
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429