Как использовать пользовательское действие github из другого репозитория в моей организации?

#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 также не хотите ничего туда писать -.-.)