Github操作不包括变量



我有一个github操作工作流,如下所示:

name: Print test type
on: [push]
jobs:
build:
strategy:
fail-fast: false
matrix:
test_type: ['test-alpha', 'test-beta']
os: [ubuntu-latest]
python-version: ['3.7', '3.9']
include:
- os: windows-latest
python-version: '3.8'
runs-on: ${{ matrix.os }}
steps:
- name: Print Alpha
if: ${{ matrix.test_type == 'test-alpha'}}
run: echo "test type is alpha. the os name is ${{ runner.os }}"
- name: Print Beta
if: ${{ matrix.test_type == 'test-beta'}}
run: echo "test type is beta. the os name is ${{ runner.os }}"

运行此工作流时,windows CI会启动并完成,但不会显示任何输出。特别是,if语句没有被执行。我是不是遗漏了什么?因为当我在矩阵中包含test-type时,我希望在工作流中也能看到windows X py3.8 X{alpha,beta}组合。

在ubuntu CI中,它可以很好地为矩阵中的所有组合执行(ubuntu X{py3.7,py3.9}X{alpha,beta}(

include方法在这里不起作用,因为Github试图扩展现有的运行配置。如果这不起作用(这里就是这种情况(,则为每个include创建一个新的配置。(更多信息:https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#expanding-或添加矩阵配置(

但是,在您的情况下,新创建的配置不包含指定的测试类型。现在有两种可能性。手动添加测试类型:

name: Print test type
on: [push]
jobs:
build:
strategy:
fail-fast: false
matrix:
test_type: ['test-alpha', 'test-beta']
os: [ubuntu-latest]
python-version: ['3.7', '3.9']
include:
- os: windows-latest
python-version: '3.8'
test_type: 'test-alpha'
- os: windows-latest
python-version: '3.8'
test_type: 'test-beta'
runs-on: ${{ matrix.os }}
steps:
- name: Print Alpha
if: ${{ matrix.test_type == 'test-alpha'}}
run: echo "test type is alpha. the os name is ${{ runner.os }}"
- name: Print Beta
if: ${{ matrix.test_type == 'test-beta'}}
run: echo "test type is beta. the os name is ${{ runner.os }}"

或删除不需要的组合:

name: Print test type
on: [push]
jobs:
build:
strategy:
fail-fast: false
matrix:
test_type: ['test-alpha', 'test-beta']
os: [ubuntu-latest, windows-latest]
python-version: ['3.7', '3.8', '3.9']
exclude:
- os: windows-latest
python-version: '3.7'
- os: windows-latest
python-version: '3.9'
- os: ubuntu-latest
python-version: '3.8'
runs-on: ${{ matrix.os }}
steps:
- name: Print Alpha
if: ${{ matrix.test_type == 'test-alpha'}}
run: echo "test type is alpha. the os name is ${{ runner.os }}"
- name: Print Beta
if: ${{ matrix.test_type == 'test-beta'}}
run: echo "test type is beta. the os name is ${{ runner.os }}"

最新更新