在 GitHub Action 中,如何根据上一步的输出来条件化步骤?

Dᴀʀ*_*ᴅᴇʀ 14 github github-actions building-github-actions

基于提交消息构建 GitHub 操作 我尝试根据提交消息是否包含特定字符串来制定步骤,将其设置为变量,然后在下一步中检查条件。

我目前的行动实施有效:

name: Smoke Test
on:
  push:
    branches:
      - main

permissions:
  contents: read
  issues: write

jobs:
  smoking:
    runs-on: [ubuntu-latest]
    steps:
      - name: Run smoke tests
        if: ${{ !contains(github.event.head_commit.message, 'smoke_test') }}
        run: |
          echo 'Smoke Test not requested'
          exit 1
  stuff:
    needs: smoking
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: JasonEtco/create-an-issue@v2
        env:
          GITHUB_TOKEN: ${{ secrets.TOKEN }}
        with:
          filename: .github/ISSUE_TEMPLATE/smoke-test.md
        id: create-issue
      - run: 'echo Created issue number ${{ steps.create-issue.outputs.number }}'
      - run: 'echo Created ${{ steps.create-issue.outputs.url }}'
Run Code Online (Sandbox Code Playgroud)

但随着实施:

exit 1
Run Code Online (Sandbox Code Playgroud)

导致该操作在操作面板中指示错误,虽然该方法有效,但在技术上并不准确,因为我不需要它出错,我只是不想运行其余步骤。

我尝试设置一个变量:

if: ${{ contains(github.event.head_commit.message, 'smoke_test') }}
with:
  run-smoke-test: true
run: |
  echo 'Smoke Test requested'
Run Code Online (Sandbox Code Playgroud)

但它不会进入下一步。

研究

在不依赖另一个 GitHub 操作的情况下,是否有一种方法smoking可以一步一步设置该步骤stuff在运行该步骤之前需要验证的环境变量?

编辑

阅读答案并实施工作输出后,我写道:

name: Smoke Test
on:
  push:
    branches:
      - main

permissions:
  contents: read
  issues: write

jobs:
  commitMessage:
    runs-on: ubuntu-latest
    outputs:
      output1: ${{ steps.isSmoke.outputs.test }}
    steps:
      - id: isSmoke
        if: ${{ contains(github.event.head_commit.message, 'smoke_test') }}
        run: echo "::set-output name=test::true"

  smokeTest:
    runs-on: ubuntu-latest
    needs: commitMessage
    steps:
      - uses: actions/checkout@v2
      - uses: JasonEtco/create-an-issue@v2
        if: steps.isSmoke.output.test == true
        env:
          GITHUB_TOKEN: ${{ secrets.DEV_TOKEN }}
        with:
          filename: .github/ISSUE_TEMPLATE/smoke-test.md
Run Code Online (Sandbox Code Playgroud)

smoke_test但是当使用提交消息时它会绕过create-an-issue

在此输入图像描述

我在阅读“根据输出条件运行 github actions 步骤”并阅读以下内容后根据我的条件:

条件是否可以出现在步骤之前和/或基于上一步运行步骤的正确方法是什么?

tim*_*gen 4

您正在寻找作业输出,它允许您将数据发送到以下作业。