【问题标题】:Run particular jobs while creating pull request in githubactions在 github 操作中创建拉取请求时运行特定作业
【发布时间】:2020-10-22 18:55:50
【问题描述】:

我已经使用 GitHub 操作实现了 ci/cd。在 ci/cd 中,当我想发布要构建这三个工作的标签时,我有三个工作,当我向特定分支提出拉取请求时,出于健康检查的目的,应该只执行两个工作。例如,我有一个功能分支,我想将此功能分支合并到开发分支。当我提出 PR 时,应该只运行两个工作。我怎样才能做到这一点?下面是我的示例代码。

name: CI

on:
  pull_request:
    branches:
      - master
      - devel
  push:
    tags:
      - '*'
jobs:
  build:
    name: build
    runs-on: self-hosted
    steps:
       --------------
   deploy:
    name: deploy
    runs-on: self-hosted
    steps:
      ------------
   automation-test:
     name: test
     runs-on: self-hosted
     steps:
       ------------
 

在这里,当我提出 PR 时,我想运行构建和自动化测试作业。

【问题讨论】:

    标签: github automation continuous-integration continuous-deployment github-actions


    【解决方案1】:

    你有两个选择:

    1. 为正确的分支运行单独的工作流文件。
    2. 在工作中使用条件

    第一个选项可能是您想要的。这里唯一的问题是,如果一项作业的输出用于另一项作业,但听起来不像是你的情况。我建议您简单地将 yaml 工作流程分解为两个独立的工作流程:

    name: CI
    
    on:
      pull_request:
        branches:
          - master
      push:
        tags:
          - '*'
    jobs:
      build:
        name: build
        runs-on: self-hosted
        steps:
           --------------
       deploy:
        name: deploy
        runs-on: self-hosted
        steps:
          ------------
       automation-test:
         name: test
         runs-on: self-hosted
         steps:
           ------------
    
    name: PR Builder
    
    on:
      pull_request:
        branches:
          - devel
    jobs:
        whatever_testing_jobs_you_like:
    

    第二个选项可能如下所示:

    name: CI
    
    on:
      pull_request:
        branches:
          - master
      push:
        tags:
          - '*'
    jobs:
      build:
        name: build
        runs-on: self-hosted
        steps:
           --------------
       deploy:
        if: "github.ref != devel" # you might tweak the condition based on your needs
        name: deploy
        runs-on: self-hosted
        steps:
          ------------
       automation-test:
         name: test
         runs-on: self-hosted
         steps:
           ------------
    

    这些上下文值/条件是well documented

    【讨论】:

    • 感谢您的回复。我尝试了这两种方法,但是当提出拉取请求时,所有工作流程都在执行。
    • 谢谢@xandermonkey 我按照你的第一种方法解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 2022-11-03
    • 2021-03-10
    • 1970-01-01
    • 2022-08-13
    • 2020-03-24
    • 2022-06-16
    • 1970-01-01
    相关资源
    最近更新 更多