Nexus 3 Repository Manager 在不使用用户界面的情况下创建(或 运行 预生成)任务

Nexus 3 Repository Manager Create (Or Run Pre-generated) Task Without Using User Interface

当我尝试按每周计划重新启动我的 Nexus3 容器并连接到我拥有的 S3 存储桶时,出现了这个问题。我将我的容器设置为连接到 S3 存储桶就好了(它每次都会创建一个新的 [A-Z,0-9]-metrics.properties 文件)但是在查看 UI.

时找不到以前的工件

我使用了 UI 设置中的 Repair - Reconcile component database from blob store 任务,效果很好!

但是...前面的所有步骤都是通过脚本自动完成的,我希望 协调 blob 存储.

的最后一步也是如此

连接到 S3 blob 存储是参考 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 的修改版本调用,它是来自 nexus-book-examples git 页面的脚本。

有没有办法:

  1. 使用 groovy 脚本创建任务?或者,
  2. 参考其中一种任务类型和 运行 使用 POST?
  3. 的任务

根据您使用的存储库管理器的特定版本,可能有用于列表和 运行 计划任务的 REST 端点。根据这张票,这是在 3.6.0 中引入的:https://issues.sonatype.org/browse/NEXUS-11935. For more information about the REST integration in 3.x, check out the following: https://help.sonatype.com/display/NXRM3/Tasks+API

要创建计划任务,您必须添加一些 groovy 代码。也许以下是一个好的开始:

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)