Статьи

Удар разработчик бинарного хранилища (пользовательские плагины)

Из нашего опыта работы с тысячами пользователей Artifactory мы точно знаем одно: мы не знаем лучше. Каждая организация выполняет свою ALM по-разному: поток утверждения артефактов, политики хранения снимков, поток от сборки к выпуску, управление, необходимые метаданные и многое, многое другое — все они разные. У нас определенно есть идеи о том, как должен выглядеть процесс сборки и развертывания, но есть много вещей, которые делают ваш процесс уникальным. И это хорошо. В конце концов, вам платят не за работу в идеальном цикле развертывания, а за решение бизнес-задач. По крайней мере, я на это надеюсь.

Признание того факта, что мы не знаем лучше, усложняет нашу жизнь как создателей бинарного хранилища … и не только причиняя вред нашему эго. Мы хотим дать вам идеальный инструмент для работы, но как мы можем сделать это, не диктуя вам, какая у вас работа? Решение хорошо известно — расширения, известные дополнения, пользовательские плагины, вы называете это.

«Боже мой!», Скажете вы. «Код! Радость-радость! Наконец, повод взломать!» Или «OMG! Код! Это ваша работа, чтобы кодировать эти вещи в свой продукт, а не мой!» В любом случае, у нас нет большого выбора, не так ли? Когда дело доходит до настройки, вы должны сообщить Artifactory, что вы хотите от нее сделать. Мы можем только попытаться сделать все возможное, чтобы сделать это проще для вас. Итак, мы разработали простой DSL.

В этой статье я покажу вам, как легко настроить Artifactory с помощью пользовательских плагинов. Вот история: вы хотите предотвратить загрузку устаревших артефактов. Информация об устаревании присоединяется в качестве пользовательских метаданных к артефактам с помощью некоторого механизма обеспечения качества.

Допустим, например, что артефакты, которые нужно запретить скачивать, помечаются свойством «deprecated = true». Артефактория позволяет вам реагировать (с помощью кода) на различные события в системе. Вы можете найти список доступных обратных вызовов в документации по пользовательским плагинам . Итак, мы собираемся написать плагин Download, и обратный вызов, который мы ищем, это altResponse. В этом обратном вызове мы можем предоставить альтернативный ответ вместо того, который был запрошен Артефактором. Вот код:

download {
   altResponse { request, responseRepoPath ->
     def deprecated = repositories.getProperties(responseRepoPath).getFirst('deprecated')
     if (deprecated && deprecated.toBoolean()) {
       status = 403
       message = 'This artifact was deprecated, please use some alternative.'
       log.warn "Request was made for deprecated artifact: $responseRepoPath.";
     }
   }
}

10 строк кода. Вот и все. Давайте рассмотрим их:

  • Это Groovy! Если вы в это, хорошо для вас, наслаждайтесь! Если нет, не волнуйтесь. Это почти как Java, так что вы прочитаете его без проблем и будете продуктивны со дня 0.
  • Это супер просто. 

Здесь мы идем, строка за строкой:

  1. Объявляет, что это плагин Download.
  2. Определяет тип обратного вызова, который мы хотим (altResponse). Когда мы реализуем альтернативный ответ, Artifactory предоставляет нам 2 объекта:
  • Запрос, экземпляр org.artifactory.request.Request . Он инкапсулирует информацию о входящем запросе, такую ​​как данные клиента и запрашиваемая информация
  • И responseRepoPath, экземпляр org.artifactory.repo.RepoPath . Содержит информацию о возвращаемом артефакте.
  • Мы хотим получить первое значение «устаревшего» свойства, если оно определено для артефакта, представленного responseRepoPath.
  • Если значение существует, и оно ‘true’, 1 или ‘y’ ( как объявлено toBoolean () ) …
  • установите код возврата на 403 ( запрещено ) и
  • установить правильное сообщение об ошибке и
  • — опционально — выдавать предупреждение в журнал Artifactory .

  • Ну вот и все.
    Теперь, когда вы увидели, что дракон пользовательских плагинов не так уж страшен, просто подумайте об уникальных способах, которыми вы облачно автоматизируете свой цикл доставки, примените правила и проверки или предоставите своим корпоративным пользователям лучший опыт работы с Artifactory.
    Вот несколько примеров и плагинов, предоставленных сообществом, чтобы зажечь ваше воображение.

    Наслаждайтесь вашей сборкой!

    Этот пост был первоначально опубликован в
    блоге JFrog
    , вы можете комментировать здесь или там.