#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.