我想通过 Github 操作对每个 PR 运行测试。
我的 Github 存储库结构是
根目录
在这种情况下,我只想测试 Java 模块。
我不想将存储库创建为多模块项目
原因是它要与其他语言结合使用,所以存储库看起来像是基于Java的不太好。
无论如何,按子目录运行 Java 测试
我是否必须将该目录写入工作流程文件才能运行它?
是否可以动态查找并执行基于 Java 的目录?
(基于 Java 的目录可能带有“Java-”前缀)
我用 GitHub 动作工作流设置矩阵 目录描述进行了测试。
我想在Github Action中动态目录Testing
您可以动态创建第一个作业中矩阵的输入,然后将其用作第二个作业中矩阵的输入。
对于所有测试目录都在目录调用中的项目tests,您可以像这样收集目录:
collect_dirs:
runs-on: ubuntu-latest
outputs:
dirs: ${{ steps.dirs.outputs.dirs }}
steps:
- uses: actions/checkout@v2
- id: dirs
run: echo "dirs=$(ls -d tests/*/ | jq --raw-input --slurp --compact-output 'split("\n")[:-1]')" >> ${GITHUB_OUTPUT}
Run Code Online (Sandbox Code Playgroud)
这里棘手的部分是如何构造输出dirs:
tests/a、b和c,则输出设置为["a","b","c"]。在第二项工作中,您可以使用基于该输出的矩阵:
run_tests:
needs: collect_dirs
runs-on: ubuntu-latest
strategy:
matrix:
dir: ${{ fromJson(needs.collect_dirs.outputs.dirs) }}
steps:
- run: echo ${{ matrix.dir }}
Run Code Online (Sandbox Code Playgroud)