#github-actions
#github-действия
Вопрос:
Я пытаюсь настроить пользовательское действие для действий GitHub, и в настоящее время это то, что у меня есть:
name: 'Install Dependencies'
inputs:
os:
description: 'The OS to fetch the dependencies for'
required: True
runs:
using: "composite"
steps:
- run: echo I am a test
shell: bash
if: startsWith(os, 'Linux')
То, что я пытаюсь сделать, это в конечном итоге иметь кучу разных сценариев оболочки, которые адаптированы для выполнения работы для конкретной ОС, и поэтому в моем действии я хочу выбрать подходящий сценарий на основе os
переданного в него параметра.
Однако, когда я вызываю действие, как показано выше, я получаю Unexpected value 'if'
. Итак, мой вопрос: как я могу запускать run
команду execute только в том случае, если выполнено условие?
Комментарии:
1. Не поддерживается по состоянию на август 2021 года — github.com/actions/runner/blob/main/docs/adrs /…
Ответ №1:
Вероятно, самым простым вариантом является использование соглашения об именовании для ваших сценариев и запуск call их с именем ОС:
myscript.$(os).sh
Комментарии:
1. Нет
if
, все еще не работает. Приведенный вами пример предназначался для указания задания в рабочем процессе, но я пытаюсь сделать это в действии , которое затем можно вызвать из рабочего процесса. Однако использование такой схемы именования на самом деле является отличной идеей…2. Хм, да, я думаю, это был бы вариант. Однако я хотел создать действие, чтобы не нужно было помещать все разные случаи в мой основной рабочий процесс и вместо этого инкапсулировать его в отдельное действие… Но я думаю, что буду придерживаться соглашения об именах. Итак, если вы обновите свой ответ так, чтобы он предполагал только это, я приму это как правильное (не хочу, чтобы кто-нибудь ошибочно предположил, что
if
подход здесь работает) 🙂
Ответ №2:
Обходным путем является использование bash ||
и отрицание требуемого условия, чтобы гарантировать, что следующая команда выполняется только в том случае, если условие истинно (которое отрицается на false, после чего выполняется команда ||
):
- run: ${{ !startsWith(os, 'Linux') }} || echo "I am a test"
shell: bash