首页 > 解决方案 > 如何从具有包含选项的构建矩阵中统一引用矩阵键?

问题描述

在下面的工作流程中,我试图设置环境变量PERL_NAME,但${{ matrix.perl }}它是空的macos-latest,而我希望它是34

name: linux-build-dist
on: [push, pull_request]
jobs:
  build-perls:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        perl: [34, 32, 30, 28, 26]
        os: [ubuntu-latest]
        include:
          - os: macos-latest
          - perl: 34
    steps:
      - uses: actions/checkout@v2
      - name: install perl
        env:
          PERL_NAME: perl-5.${{ matrix.perl }}.0
        run: |
          ./.github/scripts/install_perl.sh

我想我需要改用类似的东西${{ matrix.include.perl }}?但这不起作用,ubuntu-latest因为它不使用该include选项。如何为ubuntu-latest和获得正确的 perl 版本macos-latest

标签: github-actions

解决方案


一个肮脏的方法是有if如下条件,

name: linux-build-dist
on: [push, pull_request]
jobs:
  build-perls:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        perl: [34, 32, 30, 28, 26]
        os: [ubuntu-latest, macos-latest]

    steps:
      - uses: actions/checkout@v2
      - name: install perl Ubuntu
        if: ${{ matrix.os == 'ubuntu-latest' }}
        env:
          PERL_NAME: perl-5.${{ matrix.perl }}.0
        run: |
          ./.github/scripts/install_perl.sh

      - name: install perl Mac
        if: ${{ matrix.os == 'macos-latest' && matrix.perl == '34' }}
        env:
          PERL_NAME: perl-5.${{ matrix.perl }}.0
        run: |
          ./.github/scripts/install_perl.sh

推荐阅读