Прокрутите файл JSON и установите каждое значение как переменную в рабочем процессе Github Actions

Цель: установить ~20 переменных, которые хранятся в файле JSON, в $GITHUBENV во время задания GHA.

В настоящее время я жестко кодирую это с помощью разбора файла JSON с помощью jq:

- name: Set env variables from variables json
      run: |
          echo "NAME=$(jq -r '.name' variables.json)" >> $GITHUB_ENV
          echo "AGE=$(jq -r '.age' variables.json)" >> $GITHUB_ENV
          echo "WEIGHT=$(jq -r '.weight' variables.json)" >> $GITHUB_ENV
          ...etc

Как я могу «зациклить» этот процесс?

После этого я хочу проверить, соответствуют ли переменные, введенные вручную при запуске задания workflow_dispatch, тем, что находятся в файле variable.json. Если они не совпадают, я хочу обновить файл json новым введенным вручную значением:

- name: Set age if dispatching
      shell: bash -l {0}
      if: github.event.inputs.age != env.AGE
      run: echo "$( jq '.name = ${{github.event.inputs.age}}' variables.json )" > variables.json

Точно так же, как мне пройти через этот процесс?

может быть, для этого проще написать действие javascript. docs.github.com/en/actions/creating-actions/… jo также может использовать выражение json для доступа к свойствам в действиях github. например: ${{fromJson(contextvar).property}}

ste-xx 18.03.2022 14:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я предлагаю вам использовать действия JSON в переменные GitHub. Из документа:

test.json

{
    "value": "value",
    "array": [
        {
            "value": "value 0"
        },
        "value 1"
    ],
    "obj": {
        "value1": "value1",
        "value2": "value2"
    }
}

workflow.main

- name: JSON to variables
  uses: antifree/[email protected]
  with:
    filename: 'test.json'
    prefix: test
- name: Show output
  run: echo "The time was ${{ env.test_value }}, ${{ env.test_array_0_value }}, ${{ env.test_obj_value1 }}"

Это замечательно. Спасибо. Теперь, как насчет второй части моего вопроса? Каков наилучший способ перебрать значения github.event.inputs, чтобы сравнить эти новые переменные, установленные json_to_variables?

bonobo 24.03.2022 18:01

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