构建一个基于提交消息的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 }}'
但随着实现:
exit 1
导致动作在操作面板中指示出错,尽管这样做可以起到作用,但从技术上讲并不准确,因为我不需要它出错,我只是不希望剩余的步骤运行。
我已经尝试设置一个变量:
if: ${{ contains(github.event.head_commit.message, 'smoke_test') }}
with:
run-smoke-test: true
run: |
echo 'Smoke Test requested'
但它没有进入下一步。
研究
- 如何在 Github Actions 中使用环境变量?
- 如何在连续的 GitHub Actions 作业之间传递变量?
- GitHub Actions中,IF有ELSE吗?
- 如何在Github Actions中让一个作业失败?
- GitHub Actions - 在一个操作完成后触发另一个操作
在步骤 smoking
中,不依赖于另一个 Github actions,是否有一种方法来设置一个环境变量,以便在运行步骤 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
但是当使用smoke_test
的提交消息时,它会绕过create-an-issue
:
我在阅读 "基于输出条件运行Github Actions步骤" 和以下内容后,得出我的结论:
一个条件是否可以在步骤之前,或者根据前一步骤的输出运行步骤的正确方式是什么?