Maven 基于更新路径的条件作业和步骤
我们正在使用GitHub操作进行项目的多模块Maven CI构建 我们有:Maven 基于更新路径的条件作业和步骤,maven,github-actions,Maven,Github Actions,我们正在使用GitHub操作进行项目的多模块Maven CI构建 我们有: 我们希望在每个拉请求上运行的最小测试集;及 我们只希望在给定模块(或其依赖项)更新时运行的一组综合测试 我发现,通过定义多个工作流并使用.pull_request.paths上的内置属性,我可以完成类似的任务,如所述: 我想知道的是,我是否/如何能够在工作或步骤级别完成类似的工作。我发现作业支持基于的条件执行,但我不知道是否有任何东西可以帮助获得类似于.pull\u request.path功能的行为 假设没有,有人
- 我们希望在每个拉请求上运行的最小测试集;及
- 我们只希望在给定模块(或其依赖项)更新时运行的一组综合测试
属性,我可以完成类似的任务,如所述:
我想知道的是,我是否/如何能够在工作
或步骤
级别完成类似的工作。我发现作业支持基于的条件执行,但我不知道是否有任何东西可以帮助获得类似于.pull\u request.path
功能的行为
假设没有,有人找到了一个行动来帮助这一点吗?或者有人可以告诉我在.pull\u request.path上的
功能的实现?社区论坛上的这篇文章可能会有所帮助。
那里的原始海报也有类似的问题,他们创建了以下操作来确定路径列表是否有修改。我不确定这是否适用于on:pull_request
,但您可以试试看
路径观察者操作
存储库中的示例:
on: [push]
jobs:
job:
runs-on: ubuntu-latest
steps:
- id: modified
uses: pheel/path-watcher-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
paths: 'dir1/**/*,dir2/**/*'
- if: steps.modified.outputs.modified
run: echo "Hey some change happened in one of your watched paths!"
通过使用
git diff
将github.base\u ref
分支与最新的PR提交(${github\u SHA}
)进行区分,并过滤输出以选择路径,我成功地创建了一个执行所需操作的步骤。问题是:
- 我需要使用
语法(可能是因为下划线?)github['base\u ref']
- 克隆的回购协议中不存在base_ref分支,因此我需要在其前面加上
origin/
我对GitHub操作没有足够的经验,不知道我们是否最好将这种逻辑封装在自定义操作中,但现在我只想使用它,以避免额外的外部依赖。谢谢!我还设法在不引入自定义操作的情况下实现了一些功能,并将为此编写一个单独的答案。最后,我在上找到了
netlify/actions/diff includes
操作,但没有尝试,因为我已经找到了适合我的东西。
- name: Conditional test
env:
BASE: origin/${{ github['base_ref'] }}
run: |
paths=(
path1
path2/src
path3/src/main
)
if [ -n "$(git --no-pager diff --name-only ${BASE} ${GITHUB_SHA} -- ${paths[@]})" ]; then
echo "Changes affect module, running ALL"
mvn -B test -P all-tests --no-transfer-progress
else
echo "No changes affect module, running MINIMAL"
mvn -B test -P minimal-tests --no-transfer-progress
fi