在 monorepo 上下文中优化使用 codecov,每个包都有单独的标志

Dev*_*ein 5 monorepo codecov

我只是想知道为 monorepo 设置配置 codecov 的最佳方法是什么\xe2\x80\x99。例如,让\xe2\x80\x99s 说我的 monorepo 下有包 A 和 B。我\xe2\x80\x99m 当前使用 codecov 的方式是使用 github action codecov/codecov-action@v1,通过在我的 GitHub 工作流 YAML 文件中使用多个 use 语句,如下所示:-

\n
- uses: codecov/codecov-action@v1\n  with:\n    files: ./packages/A/coverage/lcov.info\n    flags: flag_a\n    name: A\n- uses: codecov/codecov-action@v1\n  with:\n    files: ./packages/B/coverage/lcov.info\n    flags: flag_b\n    name: B\n
Run Code Online (Sandbox Code Playgroud)\n

我知道可以使用逗号分隔值来上传多个文件,但我必须为每个包设置一个单独的标志,而这样做似乎不起作用。\n谢谢。

\n

Dev*_*ein 2

如果有人想知道我的解决方案,这就是我想出的。我最终用我自己的 bash 脚本替换了 github 操作。

final code 
#!/usr/bin/env bash

codecov_file="${GITHUB_WORKSPACE}/scripts/codecov.sh"

curl -s https://codecov.io/bash > $codecov_file
chmod +x $codecov_file

cd "${GITHUB_WORKSPACE}/packages";

for dir in */
  do
    package="${dir/\//}"
    if [ -d "$package/coverage" ]
      then
        file="$PWD/$package/coverage/lcov.info"
        flag="${package/-/_}"
        $codecov_file -f $file -F $flag -v -t $CODECOV_TOKEN
      fi
  done
Run Code Online (Sandbox Code Playgroud)

这就是上面的 bash 脚本的作用

  1. 从 codecov 下载 bash 上传器脚本
  2. 移动到软件包所在的软件包目录,并遍历所有一级目录
  3. 通过删除多余的斜杠来更改包名称
  4. 如果该目录包含覆盖目录,则仅进入该目录,因为仅测试了这些包。
  5. 创建一个文件和标志变量(删除带下划线的连字符,因为 codecov 不支持标志名称中的连字符)
  6. 通过传递文件和标志变量作为参数来执行下载的 codecov 脚本