使用最新的JFrog产品?hth华体会最新官方网站
JFrog平台用户指南


JFrog任务控制中心。x文档
要获得最新版本,请访问JFrog统一平台


跳到元数据的末尾
进入元数据的开始

概述

任务控制采用“配置即代码”方法,并使用脚本来配置它所管理的服务。脚本是可重用的代码片段,可以同时应用于一个或多个服务以执行各种操作。这些配置可以从简单的配置(比如为Artifactory服务中的一组远程存储库设置新的缓存策略),到更复杂的配置(比如在主从拓扑中创建本地和远程存储库的组合),甚至可以在托管Xray服务中设置监视。

下面是一个简单的配置脚本示例,它创建了一个本地存储库,该存储库将是Docker注册表在名为“Art1”的托管Artifactory服务中:

artifactory('Art1'){localRepository("docker-local") {packageType "docker" description "我的本地docker注册表"}}

使用配置脚本为管理任务控制下的服务提供了几个好处

  • 自动化:配置脚本使您能够自动化服务配置任务,从而提高效率,避免执行重复且容易出错的手动配置,特别是在管理多个服务时。

  • 可靠性:配置脚本通过允许您在多个服务上重用相同的配置来提高配置任务的可靠性,这些服务也可能运行在不同的运行时环境中(例如,开发、登台、生产)。

  • 标准化:在配置存储库名称、包含/排除模式、缓存策略等时,可以使用配置脚本强制执行标准。


版本2.x中的脚本

在2.0版本中,任务控制中的脚本进行了重大更改。为任务控制v1编写的任何脚本。X将无法工作,需要迁移。详情请参阅从版本1迁移脚本。版本2.x

页面内容

阅读更多

使用脚本

脚本使用Groovy编程语言并在Git存储库的版本控制下进行管理。这允许您直接在Git提供程序的编辑器中编辑脚本,或者使用您喜欢使用的任何其他编辑器。一旦你的脚本被提交到你的Git存储库,任务控制使用你在下面指定的配置来访问它们Git集成并自动与您从Git存储库中所做的任何添加或删除同步。

创建vs.更新

任务控制脚本以相同的方式编写,无论是创建新实体还是只是更新它们。如果相关实体(服务或存储库)已经存在于目标服务上,那么它将使用脚本中指定的参数进行更新。如果实体不存在,将使用指定的参数创建它。任何未指定的可选参数将采用默认值。

例如,考虑这个简单的脚本:

artifactory('Art1'){localRepository("maven-local-dev") {packageType "maven" description "这是我的maven开发库"}}

如果“Art1”Artifactory服务已经有一个名为“Maven -local-dev”的Maven存储库,它的描述将被更新为所提供的值。如果存储库不存在,将使用提供的描述创建它,并将所有其他参数设置为默认值。

注意,当做排练在脚本上,任务控制将显示脚本在更新情况下将实现的更改。

脚本库

脚本在脚本库中进行管理,脚本库可以从管理模块下脚本|脚本库。将鼠标悬停在库中的项上,会显示一些图标,这些图标可以让您删除,编辑运行脚本。脚本保存在MongoDB数据库中,只能由任务控制访问。如果您已经配置了Git集成,所有脚本将与指定的Git存储库同步。

运行脚本

运行脚本包括以下步骤:

  • 选择-从列表中选择要运行的脚本
  • 编辑-对脚本进行任何必要的编辑
  • 提供输入-提供脚本所需的任何输入
  • 排练-做一个演练脚本,以确保没有错误
  • 执行-执行脚本

这些主要步骤将在下面的部分中更详细地描述。

选择要运行的脚本

有两种方法选择要运行的脚本:

  1. 选择运行脚本从任务控制中心顶部丝带。这将显示脚本库中可用的脚本列表



    选择要运行的脚本并单击“下一步”。
  2. 将鼠标悬停在脚本库中的脚本上,然后单击运行图标。

这两个操作都将引导您进入编辑脚本的下一步。

编辑脚本

编辑脚本TAB允许您对脚本进行任何必要的更改,以满足当前运行的特定需求。

调整,不要做大的改变

该特性的设计目的是让您可以进行可能需要的微小更改,以适应您将应用脚本的略有不同的场景。要对脚本进行重大更改,我们建议使用外部编辑器修改脚本并将其提交到Git存储库。


注意,您不能修改现有脚本的名称或描述。

点击“保存”保存您的更改。

保存更改将它们提交到Git

注意,如果你有一个Git存储库为你的脚本定义,保存你的更改会提交给Git。

语法错误

如果脚本中有任何语法错误,任务控制中心将显示警报。您需要修复这个错误才能继续。

单击“Next”转到添加用户输入的下一步。

输入用户输入

在这个步骤中,您可以提供正在运行的脚本所需的任何用户输入。

输入所需的用户输入,然后单击“Next”继续下一步,在演练中测试脚本。

如果脚本中有无效指令,任务控制中心将显示错误。您需要修复这个错误才能继续。

例如,如果您编写了一个更新名为“Art1”的Artifactory服务的脚本,但任务控制中心没有识别该服务,那么这就是一个错误。

预演

预演不执行脚本,但是让您知道在执行脚本时将对选定的服务和存储库实现哪些更改。要查看更改,请单击摘要行。

排练

要做一个演练,接受脚本所做的更改,然后单击“运行”。

执行脚本

如果演练成功,可以单击运行新脚本实际执行脚本中的代码。注意,这一次,编程到脚本中的任何更改都将实际在相应的服务和存储库上执行。

成功执行后,任务控制将再次显示可供您运行的脚本列表。

在此过程中的任何步骤,您都可以通过单击“取消”或在执行步骤中单击“结束并关闭”来停止运行脚本的过程。

创建和编辑脚本

如上所述,脚本是用Groovy编写的。

有两种方法来创建和编辑脚本:

使用和外部编辑器

作为最佳实践,我们建议使用首选的编辑器在任务控制之外创建脚本,然后将它们提交到配置的Git存储库中版本控制页面。

使用脚本编辑器

要从任务控制中创建脚本,请选择添加新脚本在脚本库中。中,将鼠标悬停在脚本条目上时,选择“编辑”图标来编辑脚本脚本库

中配置了Git存储库时版本控制页面中,任务控制会将您在脚本编辑器中创建的任何新脚本提交到Git存储库中,并在您编辑脚本时提交新版本。

在脚本编辑器中,您可以根据需要创建和/或编辑脚本。完成后,单击“Save”保存脚本。如果配置了Git存储库,任务控制将提交您的更改。

块模板

为了方便,Mission Control提供了配置块作为内置模板,您可以在创建或编辑脚本时使用。输入前几个字母,然后显示可用的模板CTRL +空格Shift +空格显示自动完成选项。当您从列表中选择模板时,任务控制中心将把它与所选配置块的所有参数一起插入到您的脚本中。

示例1

下面的例子展示了如何插入一个Artifactory服务和本地存储库模板:

Artifactory和Repository块模板

示例2

添加Xray服务模板示例如下:

x射线块模板

使用外部编辑器

您可以使用任何外部编辑器创建或编辑脚本。中配置的Git存储库中提交了任何更改版本控制页面。


脚本元素

脚本由服务闭包、配置块和属性构造。脚本非常灵活,可以包含任意数量的服务闭包,每个服务闭包可以包含任意数量的配置块和属性。

有关可用的服务闭包、配置块和属性的完整列表和完整规范,请参阅配置DSL

关闭服务

服务闭包定义脚本所作用的服务(Artifactory或Xray)。人工或x射线服务只能通过必须包含在服务闭包中的配置块来创建或修改。

配置块

配置块定义应在其封闭服务闭包中指定的服务上实现的参数或更改。

配置块必须在服务闭包中

配置块必须放置在服务闭包中,该服务闭包指定了应该应用它的服务。

属性

属性用于配置配置块的相关参数。

例子

下面的简单示例脚本显示:

  • 一个Artifactory闭包,它包含一个配置块,该配置块在名为“Art1”的Artifactory服务上创建一个名为“generic-local”的通用本地存储库。配置块包含一个属性,用于指定存储库的包类型
  • 一个x射线闭包连接x射线服务调用“X1”到Artifactory服务“Art1”进行索引。
示例脚本
artifactory('Art1') {localRepository('generic-local') {packageType "generic"}} x射线('X1') {binaryManager('Art1')}

用户输入

静态配置脚本在某些情况下很有用。例如,当您想要创建具有预定义属性的属性集时。在其他情况下,您需要脚本更加动态。例如,在创建一个新的存储库时,您可能只希望在应用脚本时提供存储库名称。

为了创建更动态的配置脚本,任务控制配置DSL允许您在应用脚本时请求用户输入。

有两种方式来声明你想要获得用户输入:

  1. 请求用户输入特定属性

    localRepository("my-repository") {description userInput(类型:"STRING",值:"这是一个通用描述",description: "请提供一个描述")}

    在本例中,我们要求用户为描述存储库的属性。

  2. 将用户输入赋值给变量并使用该变量

    name = userInput (type: "STRING", value: "This is a generic description", description: "请提供一个存储库名称")localRepository(name){…}

    的值在本例中名字变量在Groovy字符串中用于创建存储库名称。

    不要使用"def"

    注意不要在声明脚本的用户输入时使用“def”。defname = userInput…).当使用def时,脚本将不能正常工作,因为它将引用用户输入对象,而不是用户输入的动态值

当应用带有用户输入的配置脚本时,任务控制将生成一个表单,提示您输入已定义的所有用户输入字段。应用脚本的用户需要提供输入字段,以便继续预演和执行脚本。

输入类型和属性

在脚本中请求用户输入时,需要指定以下参数:

类型

它可以取以下值之一:

STRING -输入是一个简单的字符串

BOOLEAN -输入是一个简单的布尔值

INTEGER -输入是一个简单的整数

SERVICE——输入是由任务控制中心管理的服务之一。用户输入屏幕将显示供用户选择的服务列表。

ARTIFACTORY -输入是一个由任务控制中心管理的ARTIFACTORY服务。用户输入屏幕将显示供用户选择的Artifactory服务列表。

EDGE -输入是一个由任务控制管理的Artifactory EDGE节点服务。用户输入屏幕将显示供用户选择的Artifactory Edge节点服务列表。

REPOSITORY——输入是Artifactory服务中的存储库由任务控制中心管理。用户输入屏幕将显示供用户选择的Artifactory服务列表。

x光,输入是由任务控制中心管理的x射线服务。用户输入屏幕将显示供用户选择的Xray服务列表。

PACKAGE_TYPE——输入是Artifactory支持的包类型之一。“docker”,“npm”,“debian”)。有关支持的包类型的完整列表,请参阅存储库配置JSON在Artifactory用户指南中。

值(可选)

默认值。如果没有指定默认值,则变量将成为强制变量,用户必须提供输入字符串。

多值(可选)
当为真时,任务控制将允许用户提供多个值。以下类型可以有多个值:SERVICE、ARTIFACTORY、XRAY、REPOSITORY
描述(可选)

在web界面中显示的描述信息

根据所请求的输入类型,一旦输入,脚本可以访问与输入值相关的不同属性,如下表所示:
输入类型 属性名 属性类型 描述




服务,ARTIFACTORY, EDGE或x射线

名字 字符串 任务控制中的服务名称
url 字符串 服务URL
类型 EntityType(枚举) 服务类型(ARTIFACTORY、XRAY)
描述 字符串 服务描述
凭证 凭证

服务凭证,例如:凭证。用户名、credentials.password






存储库

url 字符串 服务URL
存储库 LocalRepositoryImpl, RemoteRepositoryImpl, VirtualRepositoryImpl 存储库配置JSON中描述的存储库属性

例子

下面的脚本请求一个目标Artifactory服务作为用户输入,以创建与另一个名为“LocalK”的Artifactory服务的复制关系。

一旦提供了目标实例,脚本就会使用它的url属性指定其maven-local存储库作为复制目标。


targetArtifactory = userInput(名称:“目标Artifactory”,类型:“Artifactory”,描述:“请提供您想要复制到的Artifactory实例”)Artifactory ('Local') {localRepository("maven-local"){复制{url "${targetArtifactory。url}/ home -local" username targetArtifactory.credentials.userName password targetArtifactory.credentials.password cronExp "0 0/9 14 * * ?" socketTimeoutMillis 15000}}}


全局变量

除了用户输入后脚本可用的对象和属性外,脚本还可以访问名为服务

服务变量是由任务控制管理的所有服务的映射,并提供使用其访问服务对象的权限名字属性作为键。

例如,如果Mission Control正在管理一个名为“Art1”的Artifactory服务和一个名为“X1”的Xray服务,那么脚本可以使用以下行访问这些服务对象:

def serviceArtifactory = services['Art1'] def serviceXray - services['X1']

一旦获得了各自的服务对象,脚本就可以引用不同的属性,如名称、url、描述等,如上表所述。


通过REST API运行脚本

任务控制2.0中用于与脚本交互和运行脚本的REST API已经改变。详细信息请参考任务控制REST API文档中的脚本。


从版本1迁移脚本。版本2.x

从版本1升级任务控制。X到版本2。X,使用版本1创建的所有脚本。X应该在脚本库版本2.x。

在2.0版中,JFrog任务控制脚本功能发生了一些变化。最重要的变化是如何选择将脚本应用于哪些服务。

在版本1中。x,您可以创建操作Artifactory实例和存储库的脚本,但是在实际运行脚本时只需要选择那些实例和存储库。

从2.0版开始,对服务(无论是Artifactory还是Xray)的任何操作都必须包含在服务关闭(如上所述),指定脚本应该应用于的服务。虽然也可以使用用户输入输入特定的服务,但封闭的闭包必须出现在脚本中。因此,您需要迁移为版本1编写的所有脚本。x和将脚本的内容包含在服务关闭.下面的示例展示了为版本1编写的简单脚本。X将被迁移到与版本2.x兼容

例子
在Artiafctory服务中创建一个名为“Docker -local”的本地Docker注册表。
在版本1中。x, Artifactory服务将在运行脚本的流程中被选择。
在版本2中。X加上一个artifactory关闭
版本1.x中的脚本 为版本2.x迁移的脚本



localRepository("docker-local") {packageType "docker" description "我的本地docker注册表"}



选项1:指定一个名为“Art1”的特定Artifactory服务

artifactory('Art1'){localRepository("docker-local") {packageType "docker" description "我的本地docker注册表"}}


选项2:让用户使用用户输入选择Artifactory服务:

Which hartifactory = userInput (type: "ARTIFACTORY", name: "哪个ARTIFACTORY", description: "请指定要在哪个ARTIFACTORY服务上创建存储库")ARTIFACTORY (Which hartifactory .name){localRepository("docker-local") {packageType "docker" description "My local docker registry"}}

最佳实践

以下是我们建议您在将脚本迁移到任务控制2.0及以上版本时遵循的一些最佳实践:

聚合的脚本

在版本1中。x,任务控制脚本只能执行一个操作,并且被限制在Artifactory实例或存储库上操作。从版本2.0开始,脚本更加灵活,可以编写脚本来执行任意数量的操作。我们建议采用一系列小型的单动作脚本,并将它们聚合到一个更大的脚本中,以执行几个函数。

排练

为了确保您已经正确地迁移了脚本,我们建议您做一个演练,并验证如果您要实际运行脚本,任务控制所做的更改。


最佳实践

要通过示例了解有关配置脚本的更多信息,请查看JFrog的公共GitHub存储库任务控制中心的脚本。

这些脚本为编写与以下内容相关的脚本提供了最佳实践:

  • 创建单个通用存储库
  • 引导用户团队
  • 建立复制关系,包括星型拓扑和网状拓扑的实现

我们建议查看这个存储库以获得更多脚本示例的更新。

  • 没有标签