github-actions - 如何从具有包含选项的构建矩阵中统一引用矩阵键?
问题描述
在下面的工作流程中,我试图设置环境变量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
?
解决方案
一个肮脏的方法是有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
推荐阅读
- angular - CakePHP 3 到渐进式 Web 应用程序后端
- python - Cython 问题,不能在类变量上使用 cdef
- mingw - MingW64 不会为 lambda 生成完整的调试信息
- r - 基于R中的文本值重复行
- spring-mvc - 使用spring mvc将文件上传到服务器
- node.js - 如何使用nodejs编写的API在https上运行
- bash - 如何从 bash 中的循环创建字符串列表?
- c++ - 如何处理来自核心指南检查器关于 gsl::at 的静态分析警告?
- php - 我可以为 php web 应用程序和 android 移动应用程序使用相同的 firebase 数据库吗?如何?
- javascript - 如何生成 blob 文件并将其放置在相对路径上?