当前位置: 首页 > 知识库问答 >
问题:

仅当上一步已运行时才运行GitHub操作步骤

宇文飞翮
2023-03-14

我已经在GitHub操作中设置了一个工作流来运行我的测试并创建测试覆盖的工件。我的YAML文件的精简版本如下所示:

name: Build

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Other steps here

      - name: Build app
      - name: Run tests
      - name: Create artifact of test coverage

      # Other steps here

问题是当测试失败时,工件不会被创建。

我从文档中找到了关于if:always()的条件,但这也会导致在我的Build app步骤失败时运行此步骤。我不希望发生这种情况,因为在这种情况下没有什么可归档的。

如果上一步已经运行(成功或失败),我如何才能运行此步骤?

共有2个答案

长孙阳焱
2023-03-14

一个可能更好的选择是

https://docs.github.com/en/actions/learn-github-actions/contexts#steps-背景

步骤。

步骤。

  - name: Build app
    id: build
    run: |
      <build command>

  - name: Run tests

  - name: Create artifact of test coverage
    if: steps.build.outcome == 'success'

郭阳泽
2023-03-14

尝试检查成功()OR失败()

name: Build

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Other steps here

      - name: Build app
      - name: Run tests
      - name: Create artifact of test coverage
        if: success() || failure()

      # Other steps here

或者,创建退出代码的步骤输出,以便在以后的步骤中进行检查。例如:

      - name: Build app
        id: build
        run: |
          <build command>
          echo ::set-output name=exit_code::$?

      - name: Run tests

      - name: Create artifact of test coverage
        if: steps.build.outputs.exit_code == 0
 类似资料:
  • 这个问题类似于如何运行github操作步骤,即使前一步失败,但仍然无法完成作业,但接受的答案对我没有帮助,因为它会创建一个额外的作业。 下面我要做的是 当测试应用程序(步骤2)通过时;测试清理步骤应该运行,github操作工作流返回成功 当测试应用程序(步骤2)失败时;应运行测试清洁、行动松弛和失败行动步骤。github操作工作流返回失败 我如何修复下面的代码来实现它?

  • 问题内容: 因此,我试图将cron作业设置为我创建的守护程序的一种看门狗。如果守护程序出错并失败,我希望cron作业定期重新启动它…我不确定这样做的可能性如何,但是我通读了一些cron教程,找不到任何可以做我的事情正在寻找… 我的守护程序是从Shell脚本开始的,所以我真的只是在寻找一种方法来运行cron作业,前提是该作业的先前运行仍未运行。 它确实为我试图使用锁定文件提供了解决方案,但我不确定是

  • 我刚刚开始为一个项目设置一个Github操作工作流。我试图在一个容器内运行工作流步骤,并使用以下工作流定义: 但工作流无法声明容器立即停止到期。 我尝试了很多图片,包括官方文档中描述的“alpine:3.8”图片,但容器停止了。 根据GitHub操作的工作流语法,在容器部分中:“一个容器,用于运行作业中尚未指定容器的任何步骤。”我的假设是容器将被启动,步骤将在Docker容器内运行。

  • 我已经在GitHub Actions上工作了很长一段时间,我们有一个指定的工作流程。工作流程是用yaml编写的。 我试图为设置一些条件,并且在运行中跳过yaml的块。这意味着——如果针对X分支提出拉取请求——该代码块应该运行。 像这样的东西: 有人能帮我解决这个问题吗?

  • 我试图遵循Github的一个示例,使用Github操作测试我的构建,然后压缩测试结果并将其上传为工件。https://help.github.com/en/actions/automating-your-workflow-with-github-actions/persisting-workflow-data-using-artifacts#uploading-build-and-test-art

  • 我对GitHub Actions比较陌生,我有两个工作——一个是运行我的测试,另一个是将我的项目部署到服务器上。 显然,我希望测试在每个分支上运行,但是部署应该只在某个东西被推送到主控时发生。 我正在努力寻找在特定分支机构工作的方法。我知道只在特定分支上运行整个工作流是可能的,但是这意味着我将有一个“测试”工作流和一个“部署”工作流。 这听起来像是一个解决方案,但它们可以并行运行。在理想情况下,测