Не удается использовать переменную среды рабочего процесса в действии github из marketplace (через матрицу сборки)

#mongodb #github-actions

#mongodb #github-действия

Вопрос:

Я пытаюсь использовать переменную среды рабочего процесса в действии marketplace, используя матрицу сборки, но по какой-то причине она не работает.

Я в основном хочу определить версии базы данных только один раз, чтобы избежать их повторения в нескольких местах в моем рабочем процессе.

Вот мой рабочий процесс (минимальный воспроизводимый пример):

 name: dummy
on:
  pull_request:
env:
  MONGODB_3_6: 3.6.13
  MONGODB_4_0: 4.0.13

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        MONGODB: [$MONGODB_4_0, $MONGODB_3_6]
    steps:
    - uses: actions/checkout@v2
    - name: Start MongoDB
      uses: supercharge/mongodb-github-action@1.3.0
      with:
        mongodb-version: ${{ matrix.MONGODB }}
  

И это сбой с ошибкой ниже, как если MONGODB_4_0 бы она не была определена.
введите описание изображения здесь

Интересный факт, без матрицы стратегии я могу заставить ее работать, используя env контекст (документ):

 - name: Start MongoDB
  uses: supercharge/mongodb-github-action@1.3.0
  with:
    mongodb-version: ${{ env.MONGODB_4_0 }}
  

Комментарии:

1. MONGODB: [${MONGODB_4_0}, ${MONGODB_3_6}] ?

2. К сожалению, нет, github немедленно жалуется на «Недопустимый файл рабочего процесса (ошибка в синтаксисе yaml)»

3. О чем MONGODB: [${{MONGODB_4_0}}, ${{MONGODB_3_6}}] ?

4. тот же вывод, github немедленно завершается ошибкой с синтаксисом ошибки github.com/bagerard/test_github_actions/actions/runs/366743069

5. Я просто ненавижу github за это, я раньше использовал circleci, и это совсем другое.

Ответ №1:

ОБНОВЛЕНО: согласно тестам и комментариям, я думаю, что matrix не может принимать переменные среды и / или динамические значения.

так что лучшим способом будет :

 matrix:
  MONGODB: [3.6.13, 4.0.13]
  

Как сказал @max, вы можете использовать переменную для своего рабочего процесса, поэтому я думаю, что ваша матрица должна быть неправильной, может быть, вы можете попробовать так :

 MONGODB: [${{ env.MONGODB_4_0 }}, ${{ env.MONGODB_3_6 }}]
  

У вас есть только одно задание (тест), поэтому вы также можете определить свои переменные env на уровне задания.
Переменные будут доступны для всего задания :

 jobs:
  test:
    runs-on: ubuntu-latest
    env:
      MONGODB_3_6: 3.6.13
      MONGODB_4_0: 4.0.13

  

Для получения дополнительной информации: документ github

Комментарии:

1. env может быть определено на уровне рабочего процесса: docs.github.com/en/free-pro-team@latest/actions/reference /…

2. К сожалению, результат будет точно таким же, если я определю env на уровне задания, а не на уровне рабочего процесса ( github.com/bagerard/test_github_actions/actions/runs/366748668 /… )

3. И использование ${{ env.MONGODB_4_0 }} в матрице также не работает (синтаксическая ошибка) github.com/bagerard/test_github_actions/actions/runs/366764502 Проблема, по-видимому, заключается в сочетании env var build matrix

4. Ну, звучит очень странно, я думаю, они не учли тот факт, что матрица может быть динамической при установке определенных значений. Возможно, установить прямую версию в массиве для матрицы должно быть в порядке. Действительно ли для этого нужны переменные env?

5. Матрицы не работают с переменными среды в действиях Github.