Рабочий процесс Github: как сопоставить параметр ввода со значением

У меня есть следующий ввод для моего рабочего процесса Github

on:
  workflow_dispatch:
    inputs:
      environment:
        type: choice
        description: Environment
        options:
          - Development
          - QA
          - UAT
          - Production

Если пользователь выбирает Development в качестве среды, я хочу использовать слово dev в некоторых моих конкатенациях строк, если они выбирают Production, я хочу использовать prod для той же цели.

Вот пример того, как выглядят области, где должна произойти замена.

- name: Package App
  run: |
    move-file .env.$TARGET_ENVIRONMET .env
    yarn package:$TARGET_ENVIRONMENT

В этом примере мне нужно, чтобы команда move-file была move-file .env.dev .env, а команда yarn package была yarn package:dev для разработки, но у меня возникли проблемы с сопоставлением Development с dev. Я посмотрел на установку переменной в dev, если пользователь выбрал Development, но похоже, что единственная поддержка переменных предназначена для установки переменных среды, и это не представляется возможным условно.

Поэтому я не могу сделать что-то подобное

env:
  if: inputs.environment == 'Development'
    TARGET_ENVIRONMENT: 'dev'
  if: inputs.environment == 'Production'
    TARGET_ENVIRONMENT: 'prod'
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько способов сопоставить ваш ввод с переменной env — вы можете использовать действие, которое делает именно это:

- uses: kanga333/variable-mapper@master
  id: export
  with:
    key: "${{ github.event.inputs.environment }}"
    map: |
      {
        "Development": {
          "environment": "dev"
        },
        "Production": {
          "environment": "prod"
        }
      }
    export_to: env
- run: |
    move-file .env.$environment .env

или вы можете использовать какой-то хак и определить свой env (на уровне работы) следующим образом:

env:
  TARGET_ENVIRONMET: >
    ${{ fromJson('{
      "Development": "dev",
      "Production": "prod"
    }')[github.event.inputs.environment] }}
steps:
  - run: |
      move-file .env.$TARGET_ENVIRONMET .env

Другие вопросы по теме