Squeak.ru - шаблоны программирования

Поддерживает ли артефакты взаимоисключающие свойства или может автоматически удалять свойства из артефактов?

Я хотел бы сделать что-то вроде этого:

  • собрать и отправить приложение/пакет в артефакт
  • разверните этот артефакт (не используя конвейеры jfrog)
  • после развертывания добавьте метаданные (настраиваемый набор свойств) к развернутому артефакту, включая информацию, например, когда он был развернут, где он был развернут, если развертывание завершилось неудачно или успешно, и что-то вроде LatestDeploymentAttempt:true|false)
  • создайте сценарий/панель инструментов для перечисления всех развернутых артефактов и метаданных

Все это выполнимо, но у меня есть вопрос о том, как я могу реализовать свойство LatestDeploymentAttempt:true

Что мне нужно, так это поведение, при котором я могу применить свойство к артефакту, и сразу же это свойство будет удалено из всех других версий этого артефакта. Таким образом, я могу добавить такое свойство, как LatestDeploymentAttempt: true, к версии артефакта, и jfrog автоматически удалит свойство LatestDeploymentAttempt из всех других версий этого пакета — это облегчило бы список развернутых версий, если бы я мог фильтровать по одному свойству.

Это возможно?

Если есть способ удалить это свойство из всех версий с помощью REST API, я мог бы вручную удалить его, прежде чем добавлять в развернутый артефакт, но было бы неплохо, если бы jfrog имел какой-то встроенный способ сделать это.


  • Есть ли у версий общий шаблон в Artifactory? Если это так, вы можете удалить свойства с помощью JFrog CLI, который принимает регулярное выражение/подстановочный знак. Я думаю, что лучшим подходом будет публикация информации о сборке после каждого развертывания. Артефакты, развернутые вместе со сборкой, будут иметь свойства сборки, на которые вы можете ссылаться при получении последней версии. 05.01.2021
  • можно ли искать по шаблону и свойству? Могу ли я запросить все артефакты, соответствующие шаблону с определенным свойством? 07.01.2021
  • конечно, параметры команды предназначены для фильтрации, а аргументы - это набор свойств: jfrog.com/confluence/display/CLI/ 11.01.2021

Ответы:


1

Этого можно добиться, внедрив пользовательский плагин с помощью beforePropertyCreate или afterPropertyCreate обратный вызов события.
Плагин может использовать Общедоступный API Artifactory для поиска артефактов, уже отмеченных этим свойством, с помощью AQL (искусственный язык запросов) или по свойству.
Вы можете найти примеры пользовательских плагинов Artifactory в репозитории пользовательских плагинов JFrog GitHub.

Вот базовый пример такого плагина:

import org.artifactory.repo.RepoPath
import org.artifactory.search.aql.AqlResult
import org.artifactory.repo.RepoPathFactory
import java.util.Map

storage {
    beforePropertyCreate { item, name, values ->
        if (name == 'LatestDeploymentAttempt') {
            String aqlQuery = 'items.find({"$and" : [{"repo" : "my-repo-local"}, {"@LatestDeploymentAttempt" : {"$eq" : "true"}}]})'
            searches.aql(aqlQuery) { AqlResult result ->
                result.each { Map artifact ->
                    String itemPath = artifact.path + "/" + artifact.name
                    RepoPath repoPath = RepoPathFactory.create(artifact.repo, itemPath)
                    repositories.deleteProperty(repoPath, 'LatestDeploymentAttempt')
                }
            }
        }
    }
}
07.01.2021
  • создал новый тег. пользовательские плагины не поддерживаются облаком jfrog: jfrog.com/knowledge-base/ 07.01.2021
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...