#github #github-actions
Вопрос:
В настоящее время я пытаюсь создать многоразовый рабочий процесс, в котором многоразовый рабочий процесс правильно настроен с помощью триггера on: workflow_call и так далее.
Однако, когда я вызываю рабочий процесс, мне нужно иметь возможность динамически заполнять ссылку на файл общего рабочего процесса текущей веткой или фиксацией. Я также хотел бы также динамически заполнять организацию и репозиторий, если это возможно, текущей организацией / репозиторием, но это менее важно. Поэтому мой вызов другого рабочего процесса выглядит следующим образом:
jobs:
call-build-and-test:
uses: ${{github.repository}}/.github/workflows/cicd-build-and-test.yml@${{github.sha}}
К сожалению, однако две контекстные переменные, github.repository
, и github.sha
не оцениваются, и рабочий процесс завершается с ошибкой во время выполнения, указывая, что в начале строки требуются допустимые организация и репозиторий, или, если организация и репозиторий жестко запрограммированы, чтобы они были допустимыми, тогда в нем указывается, что фиксация не может быть найдена, потому чтоэто тоже оценивается неправильно.
Кто-нибудь может объяснить, почему контекстные переменные не оцениваются? Если это невозможно, как я могу динамически заполнять эти значения? Недостаточно жестко закодировать их, поскольку они должны выполняться с версией в текущей ветке, поскольку в основной ветке еще не был объединен рабочий процесс, поэтому его нельзя просто жестко закодировать, как в примерах в документах Github здесь:
Я считаю, что использование контекстных переменных, таких как github.*
, является правильным подходом, поскольку переменные среды доступны только в рамках оболочки, выполняющей задание, однако я также пробовал синтаксис среды, т. Е. GITHUB_REPOSITORY
И GITHUB_SHA
с той же проблемой.
Комментарии:
1. для этого вы можете использовать inouts.
Ответ №1:
На данный момент это невозможно сделать, поскольку Github Actions не поддерживает выражения с uses
атрибутами.
Обходного пути нет (пока?) поскольку интерпретатор рабочего процесса (который также проверяет синтаксис рабочего процесса при отправке рабочего процесса в репозиторий) не может получить значение из выражения в этот момент.
Возможно, это могло бы сработать, если рабочий процесс был распознан интерпретатором, но событие не отображается на Actions
вкладке, поскольку оно считается недействительным.
На данный момент вы можете использовать только tag
branch ref
или commit hash
после @
символа так же, как вы используете любое действие. Поэтому на данный момент это должно быть жестко запрограммировано.