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 页面的脚本。
有没有办法:
- 使用 groovy 脚本创建任务?或者,
- 参考其中一种任务类型和 运行 使用 POST?
的任务
根据您使用的存储库管理器的特定版本,可能有用于列表和 运行 计划任务的 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)
当我尝试按每周计划重新启动我的 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 页面的脚本。
有没有办法:
- 使用 groovy 脚本创建任务?或者,
- 参考其中一种任务类型和 运行 使用 POST? 的任务
根据您使用的存储库管理器的特定版本,可能有用于列表和 运行 计划任务的 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)