Поиск экшенов
Для этого есть два способа.
Непосредственно в маркетплейсе GitHub
В маркетплейсе размещается два вида инструментов для расширения основной функциональности GitHub:
- Приложения.
- Экшены.
Для поиска экшенов в самом маркетплейсе в его боковой панели можно выполнить фильтрацию по типу Action
:
Как только вы найдете нужный вам экшен, можете задействовать его в рабочем потоке GitHub, кликнув кнопку Use latest version
.
После нужно скопировать фрагмент YAML в файл рабочего потока.
Поначалу мне такой процесс работы с экшенами не очень понравился, так как хотелось бы добавлять их в один клик. Несколько позже я узнала о более удобной возможности, правда реализуется она все же несколько иначе.
Упрощенный поиск — внутри редактора рабочих потоков GitHub
При открытии файла рабочего потока в редакторе справа появляется поисковая панель, которая позволяет искать экшены и добавлять их прямо отсюда.
Так вы получаете фрагмент кода, который для добавления экшена нужно включить в рабочий поток.
По-прежнему приходится копировать YAML из одного места в другое, но уже намного лучше, чем предыдущий процесс, подразумевавший его копирование аж из маркетплейса.
Использование публичных экшенов с маркетплейса
В скопированном выше фрагменте YAML публичный экшен указан при помощи следующего синтаксиса:
{org/username}/{repository-name}@version
Использование конкретной версии экшена
Версия может быть в разных форматах:
- Хэш коммита: это самый надежный вид версионирования, так как в отличие от тегов, которые могут быть удалены, или ветки, которая может быть обновлена, эта точка зафиксирована в истории репозитория (если только кто-нибудь по глупости не сделает, например, принудительную отправку в мастер-ветку). Однако в этом подходе есть и недостатки. Один из них заключается в том, что вы не сможете рассчитывать на автоматическое повышение версии экшена (подробнее об этом позже).
- Тег: несмотря на более стабильный характер, чем у ветки, тег все равно может быть удален, что приведет к нарушению рабочего потока. Тем не менее их использование открывает крутые возможности, например, семантическое версионирование и все сопутствующие плюшки. Это делает теги одним из наиболее часто используемых вариантов версионирования экшенов.
- Ветка: наименее стабильная опция, используя которую, вы получаете последние изменения в конкретной ветке экшена при каждом запуске рабочего потока. В этом случае отсутствует постоянство, присущее хэшу коммита, и удовольствие от использования семантического версионирования, характерного для тегов.
Предпочтительный вариант зависит от конкретного случая, но, по моим наблюдениям, наиболее распространенным выбором оказываются именно теги.
Поддержание актуальности экшена с помощью Dependabot
Если вы используете публичный экшен, то наверняка будете отслеживать на маркетплейсе появление его последних версий, особенно патчей критических уязвимостей безопасности. Вручную это может быть утомительно, поэтому можно прибегнуть к такому инструменту, как dependabot, который позволят автоматизировать проверку наличия последних версий экшена.
Dependabot — это инструмент, способный автоматизировать обновление разного рода зависимостей. Экшены в этом плане имеют свои особенности, но данный инструмент их вполне поддерживает.
Он сканирует все экшены, от которых зависит ваш рабочий поток, и создает в репозитории пул реквест, обновляя версию каждого из них при появлении новой версии.
Чтобы активировать этот инструмент в рабочем потоке или экшене, добавьте в репозиторий файл .github/dependabot.yml
:
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
- Параметр
package-ecosystem
установлен наgithub-actions
, что сообщает dependabot о необходимости отслеживать новые версии экшенов. - Параметр
schedule
позволяет настроить частоту проверки обновлений.
Публикация на маркетплейсе собственного экшена
Я уже писала о создании экшена с помощью JavaScript и с помощью контейнеров Docker (ссылка не готова). Когда экшен создан, его можно разместить на маркетплейсе, чтобы другие разработчики могли найти его как на самом маркетплейсе, так и из редактора рабочего потока.
Для публикации потребуется:
- Публичный репозиторий GitHub с кодом экшена;
- Файл
action.yml
в корне репозитория.
При выполнении этих условий в верхней части экрана репозитория отобразится баннер, предлагающий опубликовать экшен на маркетплейсе GitHub.
Для размещения экшена нужно будет также указать некоторую основную информацию.
Для дополнительного оформления в файл action.yml
можно добавить следующий фрагмент:
branding:
icon: 'message-circle'
color: 'green'
Затем нужно будет выбрать категорию, указать тег версии и вуаля — публикация на маркетплейсе состоялась!
Обновление версии экшена на маркетплейсе
Для выпуска новой версии экшена перейдите в репозиторий и кликните кнопку tags.
Далее кликните Releases -> Draft a New Release, после чего потребуется снова заполнить необходимую информацию — и можно публиковать.
Интересует более подробное знакомство с GitHub Actions?
Если вам интересно знакомство с основами GitHub Actions и выполнением рабочих потоков с использованием собственных и публичных экшенов, можете почитать другие мои статьи по смежным темам:
- GitHub Actions: Начало — посвящена знакомству с GitHub Actions. Здесь описана значимость этого инструмента и приведена инструкция по созданию экшена на JavaScript с нуля.
- Реализация GitHub Action в Docker — научитесь создавать экшен с помощью Docker-контейнера и различать, когда для рабочего потока лучше написать экшен, а когда просто выполнить код.
- Развертывание Gatsby-сайта с помощью GitHub Actions — описывает, как использовать публичный экшен для создания конвейера CD.
Благодарю за внимание!
Читайте также:
- Реализация GitHub Action в контейнере Docker
- В гостях у GitHub Package Registry
- Как настроить отдельные SSH-ключи для нескольких учётных записей GitLab
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Deborah Digges: Navigating the GitHub Marketplace