我想使用 GitHub 策略矩阵在多个平台、调试和发布版本上进行构建。每个构建都有一个专用的自托管运行器。
name: Build Gatekeepers
on:
push:
branches: master
workflow_dispatch:
jobs:
Build:
needs: Update_Checkouts
strategy:
matrix:
os: [x64_win32_vc14, x64_win32_vc142]
version: [release, debug]
runs-on: [ ${{ matrix.os }}, ${{ matrix.version}} ]
steps:
- name: Wipe all STAGE folder
shell: cmd
run: |
make wipestage
rm -rf _*.*
rm -f Makefile.user
- name: Setup configuration
run: make ${{ matrix.os }}
- name: Make license
run: make license
- name: Make update
run: make update
- name: Make generate
run: make generate
- name: Make build install
run: make bi.${{ matrix.version }}
线路
runs-on: [ ${{ matrix.os }}, ${{ matrix.version}} ]
不起作用。
但是,如果我这样做
runs-on: ${{ matrix.os }}
,它会随机选择两个旨在调试和发布的两个之一,并且我想要一个特定的运行程序。
我尝试了多种变体
runs-on: [ ${{ matrix.os }}, ${{ matrix.type }} ]
我不能放置多个项目,只有
matrix.os
或只有 matrix.version
可以工作,但无法选择正确的跑步者。
有没有办法绕过 GitHub 的这个限制?或者我只是没有正确使用策略矩阵?
文档提供了答案,语法非常重要:
注意:像
这样的简单字符串不需要引号,但像self-hosted
这样的表达式需要引号。"${{ inputs.chosen-os }}"
使其发挥作用的方法是使用引号:
runs-on: [ self-hosted, "${{ matrix.os }}", "${{ matrix.version }}" ]