Создание запланированной задачи в Nexus через REST API

Один из параметров конечной точки schedules REST API Nexus предоставляет schedule. Он в основном определяет частоту, с которой будет выполняться созданная задача. Доступные параметры в пользовательском интерфейсе: вручную, один раз, ежечасно, ежедневно, еженедельно, ежемесячно и дополнительно.

Однако, когда я пытаюсь создать запланированную задачу через REST API и указываю расписание, отличное от ручного, я получаю в ответ код состояния 500 (и это означает, что сервер столкнулся с непредвиденным условием, которое не позволило ему выполнить просьбу). Я предполагаю, что мне не хватает некоторых дополнительных параметров, потому что через пользовательский интерфейс Nexus я вижу, что выбор (например) почасового расписания предоставляет несколько дополнительных параметров (например, дату начала и время начала).

Как поясняется в документации API, точка schedulesend обеспечивает способ передачи дополнительных параметров в парах ключ-значение (через свойства элемента).

Мой вопрос состоит из двух частей:

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

person Miguel Ferreira    schedule 29.05.2014    source источник


Ответы (2)


Отказ от ответственности: следующее работает с nexus 2.14. Я думаю, что у nexus 3.0 нет REST-API, а у 3.1 я не знаю, есть он у него или нет.

Таким образом,
еще один способ выяснить, какие данные требуются для запланированной задачи, — это сначала выполнить HTTP-запрос GET для http://<your-repo>/nexus/service/local/schedules, который вернет все запланированные задачи, которые у вас есть в данный момент. Помимо другой информации, такой как их имя и тип, вывод также содержит их соответствующие идентификаторы.

(Убедитесь, что вы сначала создали через пользовательский интерфейс задачу, похожую на ту, которую вы собираетесь создать через REST).

Затем, выполнив GET для http://<your-repo>/nexus/service/local/schedules/<ID> с интересующим вас идентификатором запланированной задачи, вы получите все материалы и параметры, которые вам нужны.

В моем случае я хотел создать запланированную задачу, которая удаляет старые артефакты выпуска, и данные, которые мне нужно было опубликовать в нексусе, выглядят так:

<?xml version="1.0" encoding="UTF-8"?>
<scheduled-task>
  <data>
    <enabled>true</enabled>
    <name>Remove Releases from 123-releases-repo</name>
    <typeId>ReleaseRemoverTask</typeId>
    <schedule>daily</schedule>
<!-- startDate is some timestamp, in millis, required to avoid a nasty NumberFormatException -->
    <startDate>1234567</startDate>
    <recurringTime>03:00</recurringTime>
    <properties>
      <scheduled-task-property>
        <key>numberOfVersionsToKeep</key>
        <value>1</value>
      </scheduled-task-property>
      <scheduled-task-property>
        <key>indexBackend</key>
        <value>false</value>
      </scheduled-task-property>
      <scheduled-task-property>
        <key>repositoryId</key>
        <value>123-releases-repo</value>
      </scheduled-task-property>
    </properties>
  </data>
</scheduled-task>
person tobi42    schedule 29.11.2016

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

person rseddon    schedule 30.05.2014