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

2023-11-26

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

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(使用前将#替换为@)

如何在每次推送提交时运行 GitHub 工作流程 的相关文章

随机推荐

  • 无法打印背景颜色(css解决方案)?

    我正在尝试学习如何启用打印背景颜色页面chrome 举个例子http angularjs org 主页是 So If I click print ctrl P and mark the background colors and image
  • 将富文本格式转换为 HTML 格式标签

    我正在使用 Excel 列表并希望将其转换为 农叶栎 var 氧化腺症 托 J T 豪厄尔 into i Quercus agrifolia i var i oxyadenia i Torr J T Howell 我有应用了格式的富文本格式
  • 如何防止 Django 管理中的 FK / MTM 字段的自我(递归)选择

    给定一个具有ForeignKeyField FKF 或ManyToManyField MTMF 字段且外键为 self 的模型 我该如何防止selfDjango 管理 admin 中的 递归 选择 简而言之 应该可以prevent在管理中自
  • 如何处理服务和活动(及其子活动)之间的 IPC?

    可以管理Android中两个不同进程 服务和活动 之间的通信通过 Messenger 或 AIDL 活动绑定到服务就足够了 但是 如果此活动有一个或多个子活动 会发生什么情况 从主活动启动子活动的那一刻起 我希望将通信重定向到子活动 同样
  • Selenium:退出Python脚本而不关闭浏览器

    I use the following to handle the situation where Ctrl C is used to terminate a running Python script except KeyboardInt
  • 在 x86-64 上,系统崩溃时“movnti”或“movntdq”指令是原子的吗?

    当使用像Intel optane DCPMM这样的持久内存时 如果系统在执行movnt指令时崩溃 断电 重新启动后是否可以看到部分结果 For 4 或 8 字节movnti哪个 x86 保证原子用于其他目的 16字节SSEmovntdq m
  • 用汇编语言访问数组元素(Windows)

    我在汇编语言中遇到问题 我必须访问数组的元素 假设数组包含星期几 像太阳 星期一 星期二 星期三 我必须访问数组的第二个索引 我怎样才能做到这一点 汇编中的索引基本上与 C C 相同 除了一个区别 您必须知道数据元素的大小 例如 要循环遍历
  • Angular2 - 使用服务的组件之间的交互

    我有两个组件 A 和 B 其中组件 A 包含一个按钮 我希望当用户单击此按钮时 在组件 B 上触发一个功能 a a
  • 混合模式程序集是针对运行时版本“v2.0.50727”构建的

    我收到以下异常 混合模式程序集是针对运行时版本 v2 0 50727 构建的 如果没有附加配置信息 则无法在 4 0 运行时中加载 因为我试图从我的 WPF 程序导出水晶报告 我已经在 app config 中添加了以下内容
  • TypeScript 类型不适用于扩展运算符

    我有一个 redux 风格的减速器 我正在使用 ngrx 它返回特定类型 当我在返回对象中使用展开运算符时 打字稿 linter 不会捕获无效属性 这是我的界面 interface MyState firstName string last
  • 框架内元素的选择器(具有相同的原点)

    我有一个具有以下结构的网页 index jsp包含 div test is here div 我需要一个 jQuery 选择器来直接访问div test 到目前为止我只能这样写 frames 0 document body 或这个 fram
  • 将 ARFaceGeometry 保存到 OBJ 文件

    在 iOS ARKit 应用程序中 我一直在尝试保存ARFaceGeometry数据到 OBJ 文件 我按照这里的解释 如何从 AVDepthData 制作 3D 模型 但是 OBJ 未正确创建 这是我所拥有的 func renderer
  • 在休眠中使用 inverse true

    我正在浏览 hibernate 文档并遇到了逆属性的概念 我是 Hibernate 的新手 所以我觉得很难正确理解这个概念 http docs jboss org hibernate orm 3 3 reference en US html
  • 在自定义 ListAdapter 类中显示 AlertDialog

    我很难处理显示AlertDialog自定义内ListView扩展了一个类BaseAdapter AlertDialog Builder alertbox new AlertDialog Builder getParent getApplic
  • 如何获取 Cassandra 中最后插入的行?

    我想获取 Cassandra 表中最后插入的行 如何获得 任何想法 我正在开发一个项目 用 cassandra 替换 mysql 我想摆脱所有 sql 查询并将它们全部写在 cassandra 中 只是为了传达一点理解 与所有 Cassan
  • 如何继承方法但具有不同的返回类型?

    给定以下课程 ClassA public ClassA DoSomethingAndReturnNewObject ClassB ClassA ClassC ClassA 有没有办法得到ClassB and ClassC继承方法但将返回类型
  • 如何在Delphi中使TImage透明?

    在表格上我有两个 TImage 顶部的 TImage 应该是透明的 这样我们就可以看到下面的内容 如何更改 TImage 透明度级别 Example 通常的方法是将所有图形绘制到一个目标画布 可以是 TImage 的位图 但即使有许多重叠的
  • iOS 7中UISearchDisplayController的全屏后台拦截触摸事件

    我有一个UITableview不占据整个屏幕 截屏 在 iOS 6 中一切正常 但是在 iOS 7 中 当用户搜索时 搜索结果表占据了整个视图 截屏 为了解决这个问题 我尝试按照中所述手动设置框架这个答案 现在外观是正确的 截屏 但现在显示
  • 如何将内存中的wav文件转换为mp3?

    我有一个在 Asp Net MVC 5 框架之上使用 C 编写的应用程序 我的目标是调用第三方服务来下载波形文件 然后我想把这个文件转换成mp3 最后 我想将 mp3 文件返回为 byte 以允许用户直接从内存下载它 这是我的代码最终的结果
  • 如何在每次推送提交时运行 GitHub 工作流程

    我有一些测试 我想在我的存储库的每次提交上运行 我的仓库中有以下脚本 name CI on push jobs build runs on ubuntu latest steps uses actions checkout v2 run e