python - 如何在 Github 操作中访问矩阵变量

标签 python github continuous-integration github-actions

我已经为我的 CI 需求设置了一个 Github 工作流程,每当我使用 matrixmatrix 变量的值重置为空字符串 值例如

if: matrix.python-version == '3.8' && matrix.toxenv=='quality'

并且我指定了 runs-on: ${{ matrix.os }} 它失败了:

Error when evaluating 'runs-on' for job 'run_tests'. (Line: 12, Col: 14): Unexpected value ''

如果我指定 runs-on: ubuntu-20.04 它工作正常。

完整的 Github 工作流程: (我已经设置了 TOXENV 环境变量,因此它为每个 tox 环境并行运行一个新作业,并避免在每个作业(例如质量)中运行不必要的构建并减慢作业速度)

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  run_tests:
    name: Tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-20.04]
        python-version: ['3.5', '3.8', '3.9']
        toxenv: ['django22', 'django30','django31']
        include:
          - python-version: "3.8"
            toxenv: "quality"
        exclude:
          - python-version: "3.5"
            toxenv: "django30"
          - python-version: "3.5"
            toxenv: "django31"

    steps:
    - uses: actions/checkout@v2
    - name: setup python
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Install pip
      run: pip install -r requirements/pip.txt

    - name: Install Dependencies
      run: pip install -r requirements/ci.txt

    - name: Run Tests
      env:
        TOXENV: python${{ matrix.python-version }}-${{ matrix.toxenv }}
      run: tox

    # it'll run a separate job for quality checks with python 3.8
    - name: Run Quality
      if: matrix.python-version == '3.8' && matrix.toxenv=='quality'
      env:
        TOXENV: ${{ matrix.toxenv }}
      run: tox

    - name: Run Coverage
      if: matrix.python-version == '3.8' && matrix.toxenv=='django22'
      uses: codecov/codecov-action@v1
      with:
        flags: unittests
        fail_ci_if_error: true

最佳答案

该问题与您的 include 部分有关。我不知道为什么,但在这里您必须完全定义要为哪个组合添加另一个配置。这种语法可以工作:

jobs:
  run_tests:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-20.04]
        python-version: ['3.5', '3.8', '3.9']
        toxenv: ['django22', 'django30','django31']
        include:
          - python-version: '3.8'
            toxenv: 'quality'
            os: [ubuntu-20.04]
        exclude:
          - python-version: '3.5'
            toxenv: 'django30'
          - python-version: '3.5'
            toxenv: 'django31'
    steps:
    - name: Get color
      run: echo "${{ matrix.os }} - ${{ matrix.python-version }} - ${{ matrix.toxenv }}"

关于python - 如何在 Github 操作中访问矩阵变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65035256/

相关文章:

android - .gitignore 不适用于 .cxx 文件夹

Github API v3 : fetch events from since date til date

git - 在 Windows 版 GitHub 的 bash 中安装 Git-Flow 时出错

amazon-web-services - 将现有 CodePipeline/CodeBuild 项目导出到 Cloudformation

python - 如何在braintree sale中获取交易ID

python - 如何使用 PySide 将 .ui 文件加载到 python 类中?

python - pandas 多索引选择与列条件

python - 在 Python 中按标点符号或数字拆分字符串

php - 如何将颜色从 bash 脚本传播到 CI(GitHub Actions、Travis、Gitlab...)?

docker - 如何知道我的程序是否在compose中完全在docker内部启动