使用最新的JFrog产品?hth华体会最新官方网站
JFrog平台用户指南
JFrog任务控制3。x文档
要获取最新版本,请访问JFrog统一平台
使用脚本
脚本是使用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存储库同步。
运行一个脚本
运行脚本包括以下步骤:
这些主要步骤将在下面的小节中进行更详细的描述。
选择要运行的脚本
有两种方法可以选择要运行的脚本:
- 选择运行脚本从任务控制中心的顶部丝带。这将显示脚本库中可用的脚本列表
选择要运行的脚本并单击“Next”。 - 悬停在“脚本库”中的脚本上并单击运行图标。
这两个操作都将引导您进入编辑脚本的下一个步骤。
编辑脚本
的编辑脚本TAB允许您对脚本进行必要的更改,以满足当前运行的特定需求。
调整,不要做大的改变
该特性的设计目的是让您可以进行可能需要的微小更改,以适应应用脚本的稍微不同的场景。要对脚本进行重大更改,我们建议使用外部编辑器修改脚本并将其提交到Git存储库中。
注意,您不能修改已有脚本的名称或描述。
点击“Save”保存更改。
保存更改会将它们提交到Git中
注意,如果你有一个Git存储库为脚本定义,保存更改会将它们提交到Git。
语法错误
如果脚本中有任何语法错误,任务控制中心将显示警报。您需要修复错误才能继续进行。
单击“Next”继续下一步添加用户输入。
输入用户信息
在这个步骤中,您可以提供正在运行的脚本所需的任何用户输入。
输入所需的用户输入,然后单击“Next”,继续进行下一个步骤,即在预演中测试脚本。
如果脚本中有无效的指令,任务控制中心将显示错误。您需要修复错误才能继续进行。
例如,如果您已经编写了一个脚本来更新一个名为“Art1”的Artifactory服务,但是任务控制中心没有识别这种服务,那么这就是一个错误。
预演
试运行并不执行脚本,但会让您知道在执行时将对所选服务和存储库实现哪些更改。要查看更改,请单击摘要行。
要进行试运行,请接受脚本所做的更改并单击“运行”。
执行一个脚本
试运行成功后,单击运行新的脚本来实际执行脚本中的代码。请注意,这一次,编写到脚本中的任何更改实际上都将在相应的服务和存储库中执行。
成功执行后,任务控制中心将再次显示可供运行的脚本列表。
在这个过程中的任何一步,您都可以通过单击“取消”或单击“执行”步骤中的“结束和关闭”来停止运行脚本的过程。
创建和编辑脚本
如上所述,脚本是用Groovy编写的。
有两种创建和编辑脚本的方法:
- 使用外部编辑器
- 使用脚本编辑器
使用和外部编辑器
作为最佳实践,我们建议使用首选的编辑器在任务控制之外创建脚本,然后将它们提交到配置在版本控制页面。
使用脚本编辑器
若要从任务控制内部创建脚本,请选择添加新的脚本在脚本库。控件中的脚本条目上方悬停时,选择“edit”图标以编辑脚本脚本库.
中配置了Git存储库时版本控制页面中,任务控制会将您在脚本编辑器中创建的任何新脚本提交到Git存储库中,并在编辑脚本时提交新版本。
进入脚本编辑器后,您可以根据需要创建和/或编辑脚本。完成后,单击“Save”保存脚本。如果配置了Git存储库,任务控制将提交您的更改。
块模板
为了方便起见,任务控制提供了配置块作为内置模板,您可以在创建或编辑脚本时使用这些模板。通过键入前几个字母,然后ctrl + space或shift +空间显示自动完成选项。当您从列表中选择模板时,任务控制中心将把它与所选配置块的所有参数一起插入到脚本中。
示例1
下面的例子展示了如何插入Artifactory服务和本地存储库模板:
示例2
添加Xray服务模板的示例如下:
使用外部编辑器
您可以使用任何外部编辑器创建或编辑脚本。只需确保将任何更改提交到配置的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允许您在应用脚本时请求用户输入。
有两种方式来声明你想要获得用户输入:
要求用户输入特定的属性
localRepository("my-repository") {description userInput(类型:"STRING",值:"这是一个通用描述",描述:"请提供一个描述")}
在本例中,我们要求用户为
描述
属性。将用户输入赋值给变量并使用该变量
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兼容
例子
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存储库任务控制的脚本。
这些脚本提供了编写相关脚本的最佳实践:
- 创建单个通用存储库
- 加入一个用户团队
- 设置复制关系,包括星型拓扑和网状拓扑的实现
我们建议使用更多脚本示例查看这个存储库的更新。