【问题标题】:Github actions How to only run a step when merging into masterGithub actions 如何在合并到 master 时只运行一个步骤
【发布时间】:2023-01-26 12:42:39
【问题描述】:

几个小时以来,我一直在努力解决这个问题,但我设法找到的任何东西都没有帮助。我正在尝试设置一个 github 操作,它将对每个拉取请求运行测试到 master 以及对 master 分支的任何更改,但仅在 master 分支发生更改时运行部署步骤。

这是我正在尝试做的事情的简单再现。

name: Main
on:
  push:
    branches:
      - "main"
  pull_request:
    branches:
      - "main"
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Test
        run: echo "running tests"
      - name: Deploy
        run: echo "Deploying"
        if: github.head_ref == 'main'

我已经尝试了在这里/在其他论坛上找到的多个条件,我已经尝试将 if 语句移动到 run 的上方和下方,我完全没有想法。我尝试过的所有操作要么在拉取请求和合并时运行部署步骤,要么在拉取请求和合并时跳过部署步骤。

【问题讨论】:

  • 为什么不为部署提供单独的操作脚本?
  • 您能否举例说明如何执行此操作?当我尝试这样做时,我仍然处于相同的位置。我正在使用工作流程来触发单独的脚本,但是我无法让它有条件地触发
  • 也许我误解了什么,但是 script1 可能是基于推送和 PR 构建的,而 script2 是基于推送构建和部署的?也许有点幼稚而且效率低下(构建步骤需要在两个地方),但似乎工作正常。
  • 我确实设法找到了一个可行的条件。 github.event_name == 'master'

标签: github-actions


【解决方案1】:

只需使用:

github.ref == 'refs/heads/master'

或者:

github.ref == 'refs/heads/main'

取决于您要检查哪个分支

【讨论】:

    【解决方案2】:

    这就是我所做的:

    build:
        runs-on: [...]
        steps:
          - name: Echo on merging to master
            if: ${{ github.ref == 'refs/heads/master' }}
            run: echo "I'm merging!"
    
    

    【讨论】:

      猜你喜欢
      • 2020-11-28
      • 1970-01-01
      • 2022-01-05
      • 2020-01-01
      • 2022-01-13
      • 2020-01-16
      • 2020-05-12
      • 2020-06-22
      • 2023-03-31
      相关资源
      最近更新 更多