Nexus 3 Repository Manager Создать (или запустить предварительно сгенерированный) задачу без использования пользовательского интерфейса - PullRequest
0 голосов
/ 03 декабря 2018

Этот вопрос возник, когда я пытался перезагрузить свой контейнер Nexus3 по недельному расписанию и подключиться к имеющейся у меня корзине S3.У меня настроен контейнер для подключения к корзине S3 (он каждый раз создает новый файл [A-Z,0-9]-metrics.properties), но предыдущие артефакты не обнаруживаются при просмотре пользовательского интерфейса.

Я использовал Repair - Reconcile component database from blob store Задача из настроек пользовательского интерфейса, и она прекрасно работает!

Но ... все предыдущие шаги выполняются автоматически с помощью сценариев, и я хотел бы того же для последнего шага Согласование хранилища BLOB-объектов .

Подключение кХранение BLOB-объектов S3 выполняется со ссылкой на примеры из nexus-book-examples .Как показано ниже:

Map<String, String> config = new HashMap<>()
config.put("bucket", "nexus-artifact-storage")
blobStore.createS3BlobStore('nexus-artifact-storage', config)

Учетные данные AWS предоставляются на этапе docker run, поэтому все, что необходимо для настройки хранилища BLOB-объектов, - это выше.Он вызывается модифицированной версией provision.sh , которая является скриптом со страницы git nexus-book-examples.

Есть ли способ:

  1. Создать задачу с классным скриптом?или
  2. Ссылаться на один из типов задач и запускать задачу таким образом с помощью POST?

1 Ответ

0 голосов
/ 07 декабря 2018

В зависимости от конкретной версии менеджера хранилища, которую вы используете, могут быть конечные точки REST для перечисления и выполнения запланированных задач.Это было введено в 3.6.0 согласно этому билету: https://issues.sonatype.org/browse/NEXUS-11935. Для получения дополнительной информации об интеграции REST в 3.x, проверьте следующее: https://help.sonatype.com/display/NXRM3/Tasks+API

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

import org.sonatype.nexus.scheduling.TaskConfiguration
import org.sonatype.nexus.scheduling.TaskInfo
import org.sonatype.nexus.scheduling.TaskScheduler

import groovy.json.JsonOutput
import groovy.json.JsonSlurper

class TaskXO
{
  String typeId
  Boolean enabled
  String name
  String alertEmail
  Map<String, String> properties
}

TaskXO task = new JsonSlurper().parseText(args)

TaskScheduler scheduler = container.lookup(TaskScheduler.class.name)

TaskConfiguration config = scheduler.createTaskConfigurationInstance(task.typeId)
config.enabled = task.enabled
config.name = task.name
config.alertEmail = task.alertEmail
task.properties?.each { key, value -> config.setString(key, value) }
TaskInfo taskInfo = scheduler.scheduleTask(config, scheduler.scheduleFactory.manual())
JsonOutput.toJson(taskInfo)
...