Цель: установить ~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
Точно так же, как мне пройти через этот процесс?
Я предлагаю вам использовать действия 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?
может быть, для этого проще написать действие javascript. docs.github.com/en/actions/creating-actions/… jo также может использовать выражение json для доступа к свойствам в действиях github. например: ${{fromJson(contextvar).property}}