Github Actions:检查步骤状态

2024-02-09

我在 CI 工作中的一些步骤可能会引发错误。我不想在出现错误的每个步骤上重新启动工作流程,并希望转到检查这些步骤的最后一步并以失败的方式完成此作业。 但我无法获取之前步骤的状态信息。

name: CI
on: [pull_request]
jobs:
  myjob:
    runs-on: ubuntu-latest
    steps:
      - name: Step 1
        id: hello
        run: <any> 
        continue-on-error: true
      - name: Step 2
        id: world
        run: <any> 
        continue-on-error: true
      - name: Check on failures
        if: job.steps.hello.status == failure() || job.steps.world.status == failure()
        run: exit 1

当我在“if”或“run”中使用下一个构造时,将得到:steps -> {},job.steps -> null。

如何获取状态信息?


Update: The steps context https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#steps-context现在默认包含有关每个步骤执行的详细信息。使用outcome每个步骤的属性我们可以检查其执行的结果。

name: CI
on: [pull_request]
jobs:
  myjob:
    runs-on: ubuntu-latest
    steps:
      - name: Step 1
        id: hello
        run: <any> 
        continue-on-error: true
      - name: Step 2
        id: world
        run: <any> 
        continue-on-error: true
      - name: Check on failures
        if: steps.hello.outcome != 'success' || steps.world.outcome != 'success'
        run: exit 1

原答案查看步骤上下文的文档,它看起来不包含除以下内容之外的有关该步骤的任何信息:outputs。这些必须通过步骤明确定义。这就是步骤上下文为空的原因{}.

https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions#steps-context https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions#steps-context

不幸的是,据我所知,可以访问的步骤没有默认状态。该解决方案涉及手动定义每个步骤的状态输出变量。

name: CI
on: [pull_request]
jobs:
  myjob:
    runs-on: ubuntu-latest
    steps:
      - name: Step 1
        id: hello
        run: echo ::set-output name=status::failure
        continue-on-error: true
      - name: Step 2
        id: world
        run: echo ::set-output name=status::success
        continue-on-error: true
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Check on failures
        if: steps.hello.outputs.status == 'failure' || steps.world.outputs.status == 'failure'
        run: exit 1

这将创建以下上下文输出并且作业失败。

{
  "hello": {
    "outputs": {
      "status": "failure"
    }
  },
  "world": {
     "outputs": {
      "status": "success"
    }
  }
}

https://help.github.com/en/articles/metadata-syntax-for-github-actions#outputs https://help.github.com/en/articles/metadata-syntax-for-github-actions#outputs https://help.github.com/en/articles/development-tools-for-github-actions#set-an-output-parameter-set-output https://help.github.com/en/articles/development-tools-for-github-actions#set-an-output-parameter-set-output

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Github Actions:检查步骤状态 的相关文章

随机推荐

  • UIManagedDocument 中核心数据对象的状态保存和恢复策略

    我开始尝试向我的 iOS 应用程序添加对状态保存和恢复的支持 该应用程序有一个核心数据组件 我可以通过 UIManagedDocument 访问该组件 我开始将恢复标识符添加到我的视图控制器中 并在我的 AppDelegate 和控制器中连
  • 完成处理程序 swift 3 从函数返回一个变量

    我对 swift 3 中完成处理程序的语法感到困惑 在下面的函数中 解析后xml来自 Web 服务调用的文件 它应该返回一个变量 array String String 我的尝试如下 但显然这是不正确的 enum HistoryKey ca
  • header("Location: ...) 之后的代码是否执行?

    SESSION some value 4 header Location another file php SESSION some value 5 有什么价值 SESSION some value 值为 5 您可以输出更多的标头 而不仅仅
  • 从 python 中的 for 循环返回值

    我试图找出在 for 循环语法中将参数从一个列表或字典传递到另一个列表或字典的语法 我正在寻找的期望结果是这样的 for bean in beans if bean type coffee print bean 只是 我不想打印到标准输出
  • 在java中将图像作为文本发送

    是否可以将图像读取为文本并通过网络发送 是的 那么我们该怎么做呢 您可以对图像进行 Base64 编码以生成 文本 字符串 Apache Commons Codec 有 Base64 实现 http commons apache org c
  • 更新到23.3.0后Android支持库错误

    我一直在使用 android support v4 23 1 1 最近尝试将其更新到 23 3 0 被问及时的最新版本 但出现以下错误 错误 与依赖项 com android support support annotations 冲突 应
  • 在后台检测 python 中的按键

    我正在尝试找到一种方法来检测按键 然后根据按键运行一个方法 我已经可以使用 Tkinter 做到这一点 但我不能做的是在窗口处于后台时检测按键 当我玩游戏时 我将在后台运行这个程序 我需要它能够在我玩游戏时检测输入 有什么办法可以用 Tki
  • QtDbus 无法在 Windows 7 上的 Qt5.4.1 中工作

    当我运行 Qt Creator dbus 示例时 它们无法运行 是否有任何用于工作 QtDbus 模块的设置或内容或任何先决条件 例如在chat项目 if QDBusConnection sessionBus isConnected qWa
  • 使用实体框架连接多个表

    我正在尝试使用 EF 连接 3 个表 但它会抛出错误 consider swaping conditions on either side of equals 请有人帮忙吗 var billdata from billtotal in co
  • 如何将 favicon 与 ember-cli 一起使用?

    我的索引模板上有一个图标工作了一段时间 但没有任何其他模板 现在甚至我的索引模板也不会显示它 我刚刚处于开发阶段 所以我正在使用ember server 索引 html 只需四处看看我的图标 看看它是否出现在任何地方 我现在将它放在以下位置
  • 传递 kwargs 列表?

    为了简洁起见 我可以将 kwargs 列表传递给方法吗 这就是我正在尝试做的事情 def method kwargs do something keywords keyword1 foo keyword2 bar method keywor
  • 网站与自有API之间的认证

    以前可能有人问过这个问题 所以我先致歉 我建立了一个网站并建立了一个 API 该 API 将来也将被移动应用程序使用 我两者都拥有 所以我很确定两条腿和三条腿的 OAuth 不适合我 API 的部分内容可供全世界访问 而其他部分则受到保护并
  • 简单的 Python Pandas EMA (ewma)?

    我编写了一些代码来构建自己的 EMA MACD 但决定尝试一下 Pandas 我使用下面这个网站作为对 EMA 的基本了解 并尝试让 pandas 给我相同的答案 以确保我正确使用 pandas http stockcharts com s
  • 为什么我需要一个用于自动连接/注入字段的设置器?

    我有一颗豆子
  • 解决静态断言中的不完整类型

    当表达式取决于类类型本身时 有没有办法在类内部进行 static assert 也许延迟评估直到类型完成或模板实例化之后 示例代码 include
  • cURL - 构造请求以验证服务器发送的事件

    我是 cURL 和服务器发送事件的新手 我知道如何构建一个简单的GET POST使用 cURL 请求并获取响应 另外 理论上我知道服务器发送的事件是通过创建事件源侦听器来处理的 但我不确定如何继续使用 cURL 验证任何此类 API 任何指
  • 在Android中使用EditText上的TextWatcher实时计算总计和总和?

    在这里 我想采用来自我的数据库的默认值 并将 Text 设置为该值并计算净费率和总计 否则如果用户编辑费率或收取费用 我想根据该值计算净费率和总计即时的 这是我用于计算和显示值的代码 private void showItem String
  • 如何在 TFS Build 2010 中进行构建定义,可配置 w.r.t 输入变量值和“要构建的项目”

    我们使用 TFS Build 2010 进行构建 我们有两个源代码分支 假设branchA 和branchB Now as a part of the build definition we set the projects to buil
  • 如何让 jQuery 在失败时自动重试 load()?

    我正在页面上的许多地方通过 jquery load 进行一些内容替换 在我的开发服务器上一切正常 在我的实时服务器上 有时它会给我一个 请求无效 错误 我可以在 firebug 中看到该错误 我认为服务器已经不堪重负 或者某些缓存模块可能与
  • Github Actions:检查步骤状态

    我在 CI 工作中的一些步骤可能会引发错误 我不想在出现错误的每个步骤上重新启动工作流程 并希望转到检查这些步骤的最后一步并以失败的方式完成此作业 但我无法获取之前步骤的状态信息 name CI on pull request jobs m