问题描述
我只是想知道为 monorepo 设置配置 codecov 的最佳方法是什么。例如,假设我的 monorepo 下有包 A 和 B。我目前使用 codecov 的方式是使用 github 操作 codecov/codecov-action@v1
,在我的 GitHub 工作流 YAML 文件中使用 multiple uses 语句,如下所示:-
- uses: codecov/codecov-action@v1
with:
files: ./packages/A/coverage/lcov.info
flags: flag_a
name: A
- uses: codecov/codecov-action@v1
with:
files: ./packages/B/coverage/lcov.info
flags: flag_b
name: B
我知道可以使用逗号分隔值来上传多个文件,但是我必须为每个包设置一个单独的标志,而这样做似乎不起作用。 谢谢。
解决方法
如果有人想知道我的解决方案,这就是我想出的。 我最终用我自己的 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
这就是上面的 bash 脚本的作用
- 从 codecov 下载 bash 上传器脚本
- 移动到包所在的包目录,并浏览所有第一级目录
- 通过删除多余的斜杠来更改包名称
- 如果目录包含coverage目录,则只进入它,因为只有那些包已经过测试。
- 创建一个文件和标志变量(删除带下划线的连字符,因为 codecov 不支持标志名称中的连字符)
- 通过将文件和标志变量作为参数传递来执行下载的 codecov 脚本