GitHub Actions by Example: Job Ordering

正如我们在Parallel Jobs一章中说的,jobs默认地平行运行。 你也可以使用needs关键词指定运行顺序。

name: parallel-jobs
on:
  push:
jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      - run: echo "与job2平行运行"
  job2:
    runs-on: ubuntu-latest
    steps:
      - run: echo "与job1平行运行"
  job3:
    runs-on: ubuntu-latest

job3运行的前提是job1成功运行

    needs: job1
    steps:
      - run: echo "job1 完成了再运行 job3"

job4运行的前提是 job2job3 成功运行

  job4:
    runs-on: ubuntu-latest
    needs: [job2, job3]
    steps:
      - run: echo "job2 & job3 完成了再运行 job4"
  job5:
    runs-on: ubuntu-latest

这个job会在job1之后运行,尽管job1运行失败(参见Context Variables

    if: ${{ always() }}
    needs: job1
    steps:
      - run: echo "job1 运行完了,状态:${{ needs.job1.result }}, 现在运行 job5"

下一个例子:Job Matrix