在工作流程级别环境变量中使用数组?

Dou*_*Fir 15 github-actions

您可以设置在整个工作流程中可用的环境变量,例如在这篇文章中

(来自链接帖子上的解决方案)

name: Git Pull Request Workflow

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master

env:
  one: 1
  two: zwei
  three: tres

jobs:
  first-job:
    runs-on: ubuntu-latest
    steps:
    - run: |
        echo "${{ env.one }}"
        echo "${{ env.two }}"
        echo "${{ env.three }}"
Run Code Online (Sandbox Code Playgroud)

我有一个使用矩阵策略的工作流程,如果我更改它,我必须在每个作业中更新它。我尝试将其设为全局变量,如下所示:

name: Model Multipliers
on:
  push:
    branches:
      - main
    
env:
  FRUIT: ["Apple", "Pear", "Banana", "Orange"]

jobs:
  ssql-get:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        FRUIT: ${{ env.FRUIT }}
    name: Get data
    steps:
      - name: Checkout cum-rev repo
Run Code Online (Sandbox Code Playgroud)

但这给出了错误:

工作流程无效。.github/workflows/main.yml(行:12,列:9):不需要序列 .github/workflows/main.yml(行:19,列:15):无法识别的命名值:'env'。位于表达式内的位置 1:env.FRUIT

我想做的事情可以通过其他方式实现吗?

sau*_*ahu 6

如果您使用的是bash,您可以创建一个常规数组(如在 bash 中)以在您的步骤或 github 表达式中使用 -

例子:

env:
  MAIN_BRANCHES: ("develop" "main")
Run Code Online (Sandbox Code Playgroud)

现在您可以在任何步骤中使用该数组。在 run 属性中,作为带有 , 的环境变量"${MAIN_BRANCHES}",或者if带有 Github 表达式语法的内部条件。

...
    - name: Tag build
      if: ${{ github.event_name == 'push' && contains(env.MAIN_BRANCHES, steps.calculate_changed_services.outputs.diff_dest) }}
      run: echo "my main branches ${MAIN_BRANCHES}"
...
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到完整的工作流程文件 - gitversion.yml


小智 0

如果删除值中的双引号,它应该可以工作