首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github操作:基于新标记使用workflow_run

Github操作:基于新标记使用workflow_run
EN

Stack Overflow用户
提问于 2020-12-16 13:40:41
回答 2查看 848关注 0票数 12

我有两个工作流: CI (用于连续集成)和CD (用于连续传递)。两人各自工作都很好。我的目标是只在以下情况下运行CD工作流:

  • 在主分支上创建了像v1.1.1这样的新标记
  • CI工作流已经完成。

为了实现我的目标,我使用了workflow_run事件。以下是我的工作流文件的片段:

ci.yml:

代码语言:javascript
复制
name: CI

on:
  push:
    tags: v[1-9]+.[0-9]+.[0-9]+
    
  pull_request:
    branches: [develop, hotfix*]

cd.yml

代码语言:javascript
复制
name: CD

on:
  workflow_run:
    workflows: [CI] 
    branches: [master]
    types:     
      - completed

当前的行为是:在主分支中创建标记时,只运行CI工作流。我尝试过将tags: v[1-9]+.[0-9]+.[0-9]+放在workflow_run中,但是行为是一样的。

我的问题是:我怎样才能实现我的目标?有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2022-02-13 15:18:29

根据文档,您只能对workflow_run使用branches选项,而不能使用tags,因此恐怕这就是当前设置无法工作的原因。

不过,您有一些选择:

  1. 您可以转动您的CD工作流付诸行动并将其作为CI的一部分运行,条件是:.github/actiond/cd/action.yml
代码语言:javascript
复制
name: CD
description: Run CD
runs:
  using: composite
  steps:
    - run: echo "Success!"
      shell: bash

CI:

代码语言:javascript
复制
name: CI

on:
  push:
    tags: v[1-9]+.[0-9]+.[0-9]+
  pull_request:
    branches: [develop, hotfix*]

jobs:
  sucess:
    name: Log success
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: echo "Success!"
      - name: Run CD
        if: github.event_name == 'push' && contains(github.event.ref, '/tags/')
        uses: ./.github/actions/cd
  1. 使用needs选项将其作为独立的依赖于CI作业的作业

将其转化为行动有助于更好地封装海事组织,尽管需要做一些工作。

票数 1
EN

Stack Overflow用户

发布于 2020-12-18 10:54:03

您需要在cd.yml中围绕触发工作流的名称加上"“。

代码语言:javascript
复制
name: CD

on:
  workflow_run:
    workflows: ["CI"] 
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65324440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档