gpt4 book ai didi

github-actions - 如何在每次推送提交时运行 GitHub 工作流

转载 作者:行者123 更新时间:2023-12-04 02:30:08 24 4
gpt4 key购买 nike

我有一些测试,我想在我的存储库的每次提交上运行。我的 repo 中有以下脚本:

name: CI

on: [push]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- run: echo "my tests"
不幸的是,如果我将一些新提交推送到我的存储库,则测试仅针对最新提交运行。有没有办法测试所有提交?

最佳答案

可以通过检查单个提交并在单个 run: 步骤中构建每个提交来实现这一点。
为此,fetch-depth 操作的 checkout 选项需要是 0 以 check out 完整的 git 树。
我使用 GitPython 来迭代和 check out 每个提交。
仅使用 git 命令行工具,rev-list 命令可用于创建提交列表。
棘手的部分是确定提交范围。对于拉取请求,GitHub 操作提供可用于创建提交范围的 github.head_refgithub.base_ref 属性 ( docs )。但是,这些属性不适用于其他事件,例如 push (在这种情况下, github.ref 可以与固定分支名称一起使用,例如 origin/main )。
这是一个简单的例子。它可能需要更高级的 rev-list 查询来处理 base_ref 不是 head_ref 祖先的情况,但我会将其留给其他 SO 问题来回答。

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

关于github-actions - 如何在每次推送提交时运行 GitHub 工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64708371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com