#building-github-actions
#построение-github-действия
Вопрос:
Я следую примерам действия docker Github, чтобы создать свое собственное действие. Я хотел бы сохранить действие в частном репозитории в моей организации, а затем повторно использовать его из других репозиториев в рамках той же организации.
В документации указано, что «Когда действие находится в частном репозитории, это действие может использоваться только в рабочих процессах в том же репозитории», но, насколько я понимаю, оно не описывает, как такие действия ведут себя в контексте организации — только в контексте автономного репозитория. Должен ли я сделать его общедоступным и на торговой площадке, просто чтобы иметь возможность повторно использовать его в моей собственной частной организации?
Есть ли у кого-нибудь опыт настройки такого действия?
Ответ №1:
Недавно я опубликовал пользовательское действие в GitHub marketplace, у вас есть два варианта:
- Опубликуйте свое пользовательское действие GitHub на marketplace, а затем используйте его с любым репозиторием, где захотите, однако для этого потребуется, чтобы ваш код был общедоступным
- Второй вариант — скопировать все содержимое созданного вами действия GitHub (entrypoint.sh , dockerfile и action.yml) в репозиторий, в котором вы хотите его использовать, и просто используйте его следующим образом:
uses: ./
Дайте мне знать, если это решит вашу проблему, спасибо
Ответ №2:
Github представил новую опцию общего доступа к репозиторию, которая называется internal . С помощью внутренних репозиториев можно обмениваться действиями между репозиториями. Пожалуйста, обратите внимание, что только некоторые типы учетных записей организации имеют право на этот параметр видимости.
https://dev.to/n3wt0n/finally-custom-github-actions-in-internal-repos-4l91
Ответ №3:
Расширяя ответ @MujtabaMehdi: копирование фактически может быть выполнено как часть самого действия:
-
uses: actions/checkout@v3
with:
repository: your-org/your-action
path: your-action
-
uses: ./your-action
(Это загрязняет текущую папку. Первоначально я пытался выполнить проверку действия /tmp/your-action
, но uses
принимает только пути, начинающиеся с ./
. Вы все равно можете поместить его в родительский каталог с ./../your-action
помощью , но checkout
также не хотите ничего туда писать -.-.)