Действия GitHub: выполнить, если

#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