首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Github工作流,即使job.needs成功也不会执行作业

Github工作流,即使job.needs成功也不会执行作业
EN

Stack Overflow用户
提问于 2021-01-15 19:14:06
回答 1查看 309关注 0票数 0

我对Github的工作流程有一个奇怪的问题。即使执行了来自needs的作业(job_4)并且成功,也不会执行最后一个作业job_5。有人能告诉我这是为什么吗?

工作流文件:

代码语言:javascript
复制
name: Test run v2

on:
  workflow_dispatch:

jobs:
  job_1:
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB1

  job_2:
    needs: job_1
    if: false
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB2; exit 1;

  job_3:
    needs: job_1
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB3

  job_4:
    needs: [job_2, job_3]
    if: always()
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB4

  job_5:
    needs: job_4
    runs-on: ubuntu-18.04
    steps:
        - run: echo JOB5

工作流可视化如下所示:

我可以使用下面的例子来解决这个问题:

代码语言:javascript
复制
  job_5:
    needs: job_4
    if: always() && needs.job_4.result == 'success'
    runs-on: ubuntu-18.04
    steps:
        - run: echo JOB5

但是,当job_4取得成功时,为什么它不能像预期的那样工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 19:36:11

这是您的job 4依赖于job 2job 3job 2失败的事实。因此,当您将job 4作为对job 5的需求时,它不仅会检查job 4的状态,还会检查它的依赖项(在本例中是job 2job 3),并且由于job 2失败,所以它不会对job 5的需求进行评估。奇怪的是它忽略了job 4上的条件always()。它可能是一个bug,也可能是故意设计的。这我可不知道。但是,如果您删除了job 2,一切都很顺利

代码语言:javascript
复制
# https://stackoverflow.com/questions/65735099/github-workflow-job-not-executed-even-when-job-needs-successful
name: Multiple jobs

on:
  workflow_dispatch:

jobs:
  job_1:
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB1

  job_2:
    needs: job_1
    if: false
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB2; exit 1;

  job_3:
    needs: job_1
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB3

  job_4:
    needs: [job_3]
    if: always()
    runs-on: ubuntu-18.04
    steps:
      - run: echo JOB4

  job_5:
    needs: job_4
    runs-on: ubuntu-18.04
    steps:
        - run: echo JOB5

因此,如果这个结构是你需要的东西,你应该使用你的变通方法。

你可以在support community上创建一个主题,因为这真的可能是一个bug。

在GitHub上有一个关于这个- Job-level "if" condition not evaluated correctly if job in "needs" property is skipped的公开问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65735099

复制
相关文章

相似问题

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