工作流之间对Github动作的依赖性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作流之间对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

  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.yml,仅对推和拉请求运行test.yml。我不想在工作流之间重复作业。

答案

是否可以在工作流之间创建依赖关系?

我认为目前尚不可能。也许这是他们将来会添加的功能。就个人而言,我认为很可能会添加CircleCI之类的功能来共享工作流的公共部分。

对于替代解决方案,是否将所有内容都像以下工作一样放在相同的工作流程中?仅当按下以deploy-packages开头的标签时,才会执行v作业。

name: my workflow
on: [push, pull_request]
jobs:
  test-packages:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: test packages
        run: echo "Running tests"
  deploy-packages:
    if: startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    needs: test-packages
    steps:
      - uses: actions/checkout@v1
      - name: deploy packages
        run: echo "Deploying packages"

以上是关于工作流之间对Github动作的依赖性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Github Actions 工作流中从 Github 包访问 Maven 依赖项?

错误:“路径”参数必须是字符串类型。唱歌apk github动作时收到类型未定义

初探 Bazel

Github 操作在作业之间共享工作区/工件?

activiti

Rails Github Action 无法填写动作文本