Работа с GitHub Actions на маркетплейсе

Поиск экшенов

Для этого есть два способа.

Непосредственно в маркетплейсе GitHub 

В маркетплейсе размещается два вида инструментов для расширения основной функциональности GitHub:

  1. Приложения.
  2. Экшены.

Для поиска экшенов в самом маркетплейсе в его боковой панели можно выполнить фильтрацию по типу Action:

Маркетплейс GitHub

Как только вы найдете нужный вам экшен, можете задействовать его в рабочем потоке GitHub, кликнув кнопку Use latest version.

Экшен в маркетплейсе

После нужно скопировать фрагмент YAML в файл рабочего потока.

Фрагмент YAML для добавления экшена в рабочий поток

Поначалу мне такой процесс работы с экшенами не очень понравился, так как хотелось бы добавлять их в один клик. Несколько позже я узнала о более удобной возможности, правда реализуется она все же несколько иначе.

Упрощенный поиск  —  внутри редактора рабочих потоков GitHub 

При открытии файла рабочего потока в редакторе справа появляется поисковая панель, которая позволяет искать экшены и добавлять их прямо отсюда. 

Поисковая панель маркетплейса GitHub при редактировании файла в GitHub

Так вы получаете фрагмент кода, который для добавления экшена нужно включить в рабочий поток. 

Детали конкретного экшена в поисковой панели

По-прежнему приходится копировать YAML из одного места в другое, но уже намного лучше, чем предыдущий процесс, подразумевавший его копирование аж из маркетплейса.

Использование публичных экшенов с маркетплейса

В скопированном выше фрагменте YAML публичный экшен указан при помощи следующего синтаксиса:

{org/username}/{repository-name}@version

Использование конкретной версии экшена

Версия может быть в разных форматах:

  1. Хэш коммита: это самый надежный вид версионирования, так как в отличие от тегов, которые могут быть удалены, или ветки, которая может быть обновлена, эта точка зафиксирована в истории репозитория (если только кто-нибудь по глупости не сделает, например, принудительную отправку в мастер-ветку). Однако в этом подходе есть и недостатки. Один из них заключается в том, что вы не сможете рассчитывать на автоматическое повышение версии экшена (подробнее об этом позже).
  2. Тег: несмотря на более стабильный характер, чем у ветки, тег все равно может быть удален, что приведет к нарушению рабочего потока. Тем не менее их использование открывает крутые возможности, например, семантическое версионирование и все сопутствующие плюшки. Это делает теги одним из наиболее часто используемых вариантов версионирования экшенов. 
  3. Ветка: наименее стабильная опция, используя которую, вы получаете последние изменения в конкретной ветке экшена при каждом запуске рабочего потока. В этом случае отсутствует постоянство, присущее хэшу коммита, и удовольствие от использования семантического версионирования, характерного для тегов.

Предпочтительный вариант зависит от конкретного случая, но, по моим наблюдениям, наиболее распространенным выбором оказываются именно теги.

Поддержание актуальности экшена с помощью 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 (ссылка не готова). Когда экшен создан, его можно разместить на маркетплейсе, чтобы другие разработчики могли найти его как на самом маркетплейсе, так и из редактора рабочего потока. 

Для публикации потребуется:

  1. Публичный репозиторий GitHub с кодом экшена;
  2. Файл action.yml в корне репозитория.

При выполнении этих условий в верхней части экрана репозитория отобразится баннер, предлагающий опубликовать экшен на маркетплейсе GitHub.

Баннер публикации на маркетплейсе из репозитория 

Для размещения экшена нужно будет также указать некоторую основную информацию.

Чеклист, предваряющий отправку экшена на маркетплейс

Для дополнительного оформления в файл action.yml можно добавить следующий фрагмент:

branding:
  icon: 'message-circle'
  color: 'green'

Затем нужно будет выбрать категорию, указать тег версии и вуаля — публикация на маркетплейсе состоялась!

Свежеопубликованный экшен GitHub

Обновление версии экшена на маркетплейсе

Для выпуска новой версии экшена перейдите в репозиторий и кликните кнопку tags.

Далее кликните Releases -> Draft a New Release, после чего потребуется снова заполнить необходимую информацию — и можно публиковать.

Версии экшена на GitHub

Интересует более подробное знакомство с GitHub Actions?

Если вам интересно знакомство с основами GitHub Actions и выполнением рабочих потоков с использованием собственных и публичных экшенов, можете почитать другие мои статьи по смежным темам:

  1. GitHub Actions: Начало  —  посвящена знакомству с GitHub Actions. Здесь описана значимость этого инструмента и приведена инструкция по созданию экшена на JavaScript с нуля.
  2. Реализация GitHub Action в Docker  —  научитесь создавать экшен с помощью Docker-контейнера и различать, когда для рабочего потока лучше написать экшен, а когда просто выполнить код.
  3. Развертывание Gatsby-сайта с помощью GitHub Actions  —  описывает, как использовать публичный экшен для создания конвейера CD.

Благодарю за внимание!

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Deborah Digges: Navigating the GitHub Marketplace

Предыдущая статья7 Лучших курсов и книг по программированию на Rust для начинающих в 2021 году
Следующая статьяРазработка инфраструктуры и торговых ботов для ИИ-трейдинга