【问题标题】:Trigger github workflow only if pushed to specific branch and tag exists仅当推送到特定分支且标签存在时才触发 github 工作流
【发布时间】:2020-05-09 11:31:34
【问题描述】:

我只想在代码被推送到特定分支并且标签存在时触发 Github 工作流,但我的配置(github 工作流)没有按预期工作:

name: Deployment
on:
  push:
    branches:
      - feature/BRANCH-NAME
    tags:
      - *
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: '10.x'

      - name: Install dependencies
        run: |
          npm install

      - name: Lint & build
        run: |
          npm run build

即使标签不存在也会触发工作流。

我该如何解决这个问题?

【问题讨论】:

  • The example in the documentation 说如果你有“分支”和“标签”,那么它会触发它们中的任何一个,即它们是“或”而不是“和”。不知道你是否/如何做'和'。
  • 感谢@Rup 的回复。这正是我想以某种方式设置的“和”..

标签: github github-actions


【解决方案1】:

由于我找不到实现 AND 条件的方法(即在 master 上标记 AND),我使用了以下解决方法:

name: Worflow demo
on:
  push:
    tags:
      - v*

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: Exit if not on master branch
        if: endsWith(github.ref, 'master') == false
        run: exit -1

      - name: Next job ...

如果有标记的(例如标记v1.0.0)提交被推送,这将触发:

on:
  push:
    tags:
      - v*

第一步('Exit if not on master branch')然后检查当前分支是否不以master结尾并退出工作流(后续测试将不会开始):

- name: Exit if not on master branch
  if: endsWith(github.ref, 'master') == false
  run: exit -1

希望这对其他人也有帮助。

【讨论】:

  • 您在发布时是否使用此工作流程?如果是这样,您可以使用on: release 事件来代替on: push。这应该可以实现您想要的,因为它仅在主分支上有标记的版本时触发。
  • 目前,我没有使用此工作流进行发布。不过谢谢你的回复!
  • 如果我错了,@peterevans 纠正我。 on: release 在默认分支上推送多个标签时不会触发
  • @Patrick 我尝试了您的解决方案,但推送标记提交时 github.ref 为空
猜你喜欢
  • 2022-10-07
  • 2020-12-07
  • 2021-01-12
  • 2021-10-14
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
相关资源
最近更新 更多