我有一些测试,我想在我的存储库的每次提交上运行。我的仓库中有以下脚本:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: echo "my tests"
不幸的是,如果我将一些新的提交推送到我的存储库,则测试仅针对最新的提交运行。有没有办法测试所有提交?
可以通过检查各个提交并在单个提交中构建每个提交来实现这一点run:
step.
为了做到这一点,fetch-depth
选项为checkout
需要采取行动0
查看完整的 git 树。
我做了这样的事情使用GitPython迭代并检查每个提交。
仅使用git
命令行工具,rev-list命令可用于创建提交列表。
棘手的部分是确定提交范围。对于拉取请求,GitHub actions 提供github.head_ref
and github.base_ref
特性 (docs)可用于创建提交范围。但是,这些属性不可用于其他事件,例如push
(在这种情况下,github.ref
可以与固定分支名称一起使用,例如origin/main
).
这是一个简单的例子。它可能需要更多高级查询rev-list
处理以下情况base_ref
不是的祖先head_ref
,但我会将其留给其他问题来回答。
name: CI
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- run: |
for commit in $(git rev-list ${{ github.base_ref }}..${{ github.head_ref }}); do
git checkout $commit
echo "run test"
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)