首页 > 解决方案 > Github 操作上的工作流之间的依赖关系

问题描述

我有一个带有两个工作流程的 monorepo:

.github/workflows/test.yml

name: test

on: [push, pull_request]

jobs:
  test-packages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: test packages
        run: |
          yarn install
          yarn test
...

.github/workflows/deploy.yml

name: deploy

on:
  push:
    tags:
      - "*"

jobs:
  deploy-packages:
    runs-on: ubuntu-latest
    needs: test-packages
    steps:
      - uses: actions/checkout@v1
      - name: deploy packages
        run: |
          yarn deploy
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
...

这不起作用,我无法在另一个工作流程中引用作业:

### ERRORED 19:13:07Z

- Your workflow file was invalid: The pipeline is not valid. The pipeline must contain at least one job with no dependencies.

有没有办法在工作流之间创建依赖关系?

我想要的是在标签上运行,并且test.yml只在推送和拉取请求上运行。我不想在工作流程之间重复作业。deploy.ymltest.yml

标签: githubcontinuous-integrationcontinuous-deploymentgithub-actions

解决方案


现在可以使用 workflow_run 在 Github Actions 上的工作流之间建立依赖关系

使用此配置,Release工作流程将在Run Tests工作流程完成后工作。

name: Release
on:
  workflow_run:
    workflows: ["Run Tests"]
    branches: [main]
    types: 
      - completed

推荐阅读