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


跳到元数据的末尾
转到元数据的开始

概述

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

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

artifactory('Art1'){localRepository("docker-local") {packageType "docker" description "My local docker registry"}}

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

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

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

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


版本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. 选择运行脚本从任务控制中心的绶带上摘下来。这将显示脚本库中可用的脚本列表



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

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

编辑脚本

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

调整,不要做大的改变

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


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

单击“Save”保存更改。

保存更改将它们提交到Git

请注意,如果您有Git存储库为您的脚本定义,保存更改将把它们提交到Git。

语法错误

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

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

输入用户输入

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

输入所需的用户输入并单击“Next”,以进入在试运行中测试脚本的下一步。

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

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

做预演

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

排练

要进行演练,请接受脚本将进行的更改并单击“run”。

执行脚本

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

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

在此过程中的任何步骤中,您都可以通过单击“Cancel”或单击执行步骤中的“End and Close”来停止运行脚本的过程。

创建和编辑脚本

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

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

使用和外部编辑器

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

使用脚本编辑器

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

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

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

块模板

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

示例1

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

工件和存储库块模板

示例2

下面的例子展示了如何添加一个x射线服务模板:

x射线块模板

使用外部编辑器

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


脚本元素

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

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

关闭服务

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

配置块

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

配置块必须在服务闭包中

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

属性

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

例子

下面是一个简单的脚本示例:

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

用户输入

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

要创建更动态的配置脚本,Mission Control配置DSL允许您在应用脚本时请求用户输入。

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

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

    localRepository("my-repository") {description userInput (type: "STRING", value: "This is a generic description", description: "Please提供一个description")}

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

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

    name = userInput(类型:"STRING",值:"这是一个通用描述",描述:"请提供一个存储库名称")localRepository(name){…}

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

    不要用“def”

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

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

输入类型和属性

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

类型

它可以取以下值之一:

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

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

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

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

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

EDGE -输入是由任务控制中心管理的人工边缘节点服务。用户输入屏幕将显示Artifactory Edge节点服务列表,供用户选择。

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

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

PACKAGE_TYPE—输入是Artifactory支持的包类型之一。"docker", "npm", "debian")。有关支持的软件包类型的完整列表,请参阅存储库配置JSON参见《Artifactory用户指南》。

值(可选)

默认值。如果未指定默认值,则该变量将变为强制性的,并且用户必须提供输入字符串。

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

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

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




服务,人工,边缘或x射线

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

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






存储库

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

例子

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

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


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


全局变量

除了用户输入的对象和属性之外,脚本还可以访问全局变量服务

服务变量是由任务控制中心管理的所有服务的映射,并提供对服务对象的访问名字属性是关键。

例如,如果任务控制中心正在管理一个名为“Art1”的人工服务和一个名为“X1”的x射线服务,脚本可以使用以下行访问这些服务对象:

defserviceartifactory = services['Art1'] defservicexray - services['X1']

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


通过REST API运行脚本

在Mission Control 2.0中,用于与脚本交互和运行脚本的REST API发生了变化。有关详细信息,请参阅任务控制REST API文档中的脚本。


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

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

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

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

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

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



localRepository("docker-local") {packageType "docker" description "My local docker registry"}



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

artifactory('Art1'){localRepository("docker-local") {packageType "docker" description "My local docker registry"}}


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

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

最佳实践

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

聚合的脚本

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

排练

为了确保您已经正确地迁移了脚本,我们建议您做一次预演,并验证如果您要实际运行脚本,Mission Control将做出的更改。


最佳实践

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

这些脚本提供了编写以下脚本的最佳实践:

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

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

  • 没有标签