如何在 GitHub Actions 的作业之间共享依赖项?

8
我刚开始使用GitHub Actions并尝试正确配置作业。现在我有一个名为“构建”的作业,它设置Python并安装依赖项,我还有一个名为“行为测试”的作业,它需要这些依赖项才能运行。当我将测试和构建放在同一个作业中时,一切都很好。但是我想分别在不同的作业中进行构建和测试。但是当我以此配置运行它们时,我会收到错误消息:behave:命令未找到。我在requirementx.txt文件中安装了Behave。我做错了什么?这种配置通常是否可行?
name: CI test

on:
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: 3.8
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi

  cc_test:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Run cc test
        run: |
          behave --no-capture --no-skipped -t guest -t cc -D driver=BROWSERSTACK features

作业在不同的运行器上运行,因此它们不会共享您在作业中进行的任何更改。您可以通过输出或工件在作业之间传输数据或文件。但是看起来安装 behave 也将其可执行文件夹添加到路径中。而且可能还有更多 pip install 所做的事情。 - riQQ
1个回答

1

正如riQQ和文档所说:

工作是在同一运行程序上执行的一组步骤。默认情况下,具有多个作业的工作流将并行运行这些作业。您还可以配置工作流以按顺序运行作业。例如,工作流可以具有两个顺序作业,用于构建和测试代码,其中测试作业依赖于构建作业的状态。如果构建作业失败,则不会运行测试作业。

在您的情况下,最好只使用一个作业来构建和测试并同时执行这两个任务。将测试放在单独的作业中可能是一个不错的选择,但这需要以下两种方法之一:

  • 在前一个步骤中准备可测试的软件包并共享它(仍然可能需要安装某些依赖项)
  • 检出代码,安装依赖项,构建代码并运行测试,这意味着您需要重复前一个作业的所有步骤

我认为这回答了你的问题。https://dev59.com/K1MH5IYBdhLWcg3wwSLz - Carter Cole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接