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


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

概述

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

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

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

使用配置脚本对管理任务控制下的服务有几个好处

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

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

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


版本2.x中的脚本

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

页面内容

阅读更多

使用脚本

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

创建和更新

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

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

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服务,但是任务控制中心没有识别这种服务,那么这就是一个错误。

预演

试运行并不执行脚本,但会让您知道在执行时将对所选服务和存储库实现哪些更改。要查看更改,请单击摘要行。

排练

要进行试运行,请接受脚本所做的更改并单击“运行”。

执行一个脚本

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

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

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

创建和编辑脚本

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

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

使用和外部编辑器

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

使用脚本编辑器

若要从任务控制内部创建脚本,请选择添加新的脚本在脚本库。控件中的脚本条目上方悬停时,选择“edit”图标以编辑脚本脚本库

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

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

块模板

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

示例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"}} xray('X1') {binaryManager('Art1')}

用户输入

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

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

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

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

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

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

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

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

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

    不要使用“def”

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

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

输入类型和属性

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

类型

这可以采用以下值之一:

字符串——输入是一个简单的字符串

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

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

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

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

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

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

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

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

值(可选)

一个默认值。如果未指定默认值,则该变量为必选项,用户必须提供输入字符串。

多值(可选)
当为true时,任务控制将允许用户提供多个值。以下类型可以有多个值: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") {replication {url "${targetArtifactory. targetArtifactory = userInput(名称:"目标Artifactory",类型:" Artifactory",描述:"请提供要复制到的Artifactory实例")url}/ maen -local" username targetArtifactory.credentials.userName password targetArtifactory.credentials.password cronExp "0 0/9 14 * * ?" socketTimeoutMillis 15000}}}


全局变量

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

服务变量是任务控制所管理的所有服务的映射,它提供了对服务对象的访问的名字以物业为关键。

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

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

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


通过REST API运行脚本

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


从版本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"描述"我的本地docker注册表"}}


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

wherehartifactory = userInput(类型:"ARTIFACTORY",名称:"Which ARTIFACTORY",描述:"请指定要在其上创建存储库的ARTIFACTORY服务")ARTIFACTORY (wherehartifactory .name){localRepository("docker-local") {packageType "docker"描述"我的本地docker注册表"}}

最佳实践

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

聚合的脚本

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

排练

为了确保您已经正确地迁移了您的脚本,我们建议进行一次演练,并验证如果您真的要运行脚本,任务控制将会做出的更改。


最佳实践

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

这些脚本提供了编写相关脚本的最佳实践:

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

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

  • 没有标签