uCommand是一个CLI工具,提供了易于使用的功能以与IBM®UrbanCode Deploy一起使用。 您可以从UrbanCode开发人员中心的插件部分下载uCommand。
使用UrbanCode Deploy时,大多数交互都是通过Web界面进行的。 要将UrbanCode集成到更广泛的管道结构中,在此结构中所有事物都已连接并自动化,您需要一种可靠的方式来通过CLI执行操作。
UrbanCode Deploy带有官方的CLI工具(udclient)。 但是,udclient缺少重要的功能,例如备份,还原和升级UrbanCode配置或请求等待完成的应用程序进程的可能性。
uCommand旨在填补这些空白。 它为预定义功能提供了简单的操作,并为大多数UrbanCode Deploy API提供了PHP实现。 易于设置和使用。 uCommand需要UrbanURL服务器的Web URL,用户名和身份验证令牌。 设置向导可帮助您在首次启动时配置工具,包括创建用于安全连接到服务器的授权令牌。
uCommand的一些优点包括:
使用方便 开发人员准备就绪 提供的常用动作 易于自动化UrbanCode Deploy任务由于该工具基于UrbanCode Deploy udclient和REST API构建,因此您无需运行大量命令即可执行特定操作。
例如,要使用udclient和REST API手动备份UrbanCode Deploy配置:
查找组成每个应用程序的所有组件,流程和资源。 在备份应用程序本身之前,请备份每个单独的项目。使用uCommand,这些手动步骤可以组合在一起。 要执行完整的备份,您不需要知道配置的每个元素之间的关系; 只需运行一个命令:
php ucommand.php backup使用uCommand,您可以:
备份服务器配置。 将服务器配置恢复到具有相同IBM UrbanCode Deploy发行版的服务器。 在多个UrbanCode Deploy服务器之间共享UrbanCode Deploy配置。 为包含可部署工件的组件创建版本。 将版本集合捆绑到一个可以一起部署的快照中。 将快照从一台服务器升级到另一台服务器。 运行部署过程。本文使用带有相关组件和过程的简单UrbanCode Deploy应用程序:
名称 :灯 描述 :部署LAMP服务器的应用程序 组成部分 : 阿帕奇 的MySQL PHP 流程 :部署默认情况下,UrbanCode Deploy不提供备份和还原其整个配置的工具。 但是,uCommand提供了一些简单的操作来运行以下任务:
php ucommand.php --action=backup php ucommand.php --action=restore --dir={{backup_directory}}uCommand设计用于一台或多台UrbanCode Deploy服务器。 备份期间导出的文件可以在同一UrbanCode Deploy服务器中还原。 这些也可以轻松地同时与其他UrbanCode Deploy服务器共享。
使用uCommand,您可以与其他团队共享数据,从单个组件到整个配置,甚至是快照及其依赖项(工件文件)。
还可以将精确的配置和数据复制到多个服务器中,以执行与源服务器完全相同的部署。 这是一个例子:
要将应用程序从一个UrbanCode原始服务器共享到目标服务器:
php ucommand.php --action=promoteApplication --application{{application_name}}共享快照,包括其工件:
php ucommand.php --action=promoteSnapshot --snapshot={{snapshot_name}}UrbanCode Deploy主要通过Web界面使用。 但是,在某些情况下,应该自动执行部署或在脚本中运行部署,例如,UrbanCode Deploy需要在部署自动化管道中或从不提供用户界面的服务器CLI中自动运行。
使用uCommand,您可以使用参数(应用程序名称,进程名称,属性等)运行应用程序进程。 uCommand还提供了易于使用的操作来请求执行应用程序进程并等待其完成。 完成后将返回部署的成功或失败:
php ucommand.php --action=runAndWait --file={{request_json_file}}请求JSON文件包含以下信息:
{ "application": "APPLICATION_NAME", "applicationProcess": "APPLICATION_PROCESS", "description": "GENERIC_DESCRIPTION", "environment": "ENVIRONMENT_TO_DEPLOY", "onlyChanged": "APPLY_CHANGED_VERSIONS_ONLY", "post-deploy-message": "MESSAGE_POST_DEPLOYMENT", "snapshot": "SNAPSHOT_NAME" }您可以将uCommand用作CLI工具,以从持续集成/连续交付(CI / CD)管道运行部署。
uCommand使用PHP编写的包装脚本,该脚本结合了udclient和REST API,以便用户可以执行日常操作。 该工具首先生成API请求,将登录信息(Web URL,用户名,身份验证令牌)与要执行的操作和相关参数结合在一起。 然后,通过PHP exec函数在CLI中执行生成的请求。
uCommand不仅为可用的UrbanCode API提供了一个PHP层,而且将它们组合在一起以创建更复杂的功能。 这意味着,对于某些操作,将依次调用多个API,并将结果组合在一起。
ucommand.php是可执行PHP脚本,可触发该工具中可用的众多操作,以在UrbanCode Deploy中检索或创建数据。
它负责:
对象实例 配置设置 参数验证 执行动作 救命“ 动作”部分提供了uCommand可以执行的可用动作的列表。
uCommand带有一组默认设置,尽管正确执行该工具需要某些服务器特定的值。 配置文件位于工具的config子目录中。
可以使用安装脚本来帮助您进行uCommand配置。 从uCommand主目录运行安装脚本:
cd {{ucommand_directory}} php ucommand.php --action=setup系统将指导您完成一系列配置步骤,包括请求身份验证令牌以安全连接到UrbanCode Deploy服务器。 安装程序还会检查是否满足所有先决条件才能正确运行uCommand。
安装脚本会在config / servers /文件夹中生成服务器配置文件。 该文件以您提供的别名命名:
alias: '{{my_server}}' file: '{{my_server}}.server.php'可以保存多个服务器配置,然后选择要使用的服务器配置。
选择要与uCommand一起使用的服务器配置:
php ucommand.php --action=config --alias={{alias_name}}为了正常工作,uCommand要求:
PHP 5.4以上 Java 1.6.0以上 读取,写入和执行整个uCommand文件夹的权限 有效配置要执行任何操作,请在完成所有设置后运行以下命令:
cd {{UCOMMAND_DIRECTORY}} php ucommand.php --action={{ACTION}} --{{argument_2}}={{VALUE_2}} ...该操作的结果是CLI或文件中的输出。 这基于配置文件中设置的输出类型。 带有反馈的日志信息也可用于每个操作。 此信息包括操作成功或失败的通知。
uCommand有许多可用的操作。 要求采取行动:
php ucommand.php --action={{ACTION}} --{{argument_1}}={{VALUE_1}} --{{argument_2}}={{VALUE_2}} ...注意:指定参数的顺序与正确执行操作无关。
对于每个受支持的操作,uCommand都会提供联机帮助,并提供有关使用该工具的详细信息。 要获得特定操作的帮助,请执行以下操作:
php ucommand.php --action={{ACTION}} --help当将应用程序进程请求标识作为参数传递时,将返回进程的状态:
0-成功完成 2-已初始化 3-执行 4-待处理 5 –已取消 100-代理未在线 255-失败完成可以从Web浏览器中的UrbanCode Deploy URL获取应用程序请求ID。
{{SERVER_URL}}/#applicationProcessRequest/82d6119e-b9fd-4396-9cee-7cc484be4d77或者,可以从uCommand action run的CLI输出中获取ID。
行动 细节 run 根据作为参数传递的JSON文件中设置的详细信息请求应用程序进程 必需:-- --file 申请流程请求JSON文件的路径运行在JSON文件中定义的应用程序过程,如下所示:
{ "application": {{APPLICATION_NAME}}, "applicationProcess": {{APPLICATION_PROCESS}}, "description": {{GENERIC_DESCRIPTION}}, "environment": {{ENVIRONMENT_TO_DEPLOY}}, "onlyChanged": {{APPLY_CHANGED_VERSIONS_ONLY}}, "post-deploy-message": {{MESSAGE_POST_DEPLOYMENT}}, "snapshot": {{SNAPSHOT_NAME}}, "properties" : { {{PROPERTY}} : {{VALUE}} } }如果应用程序过程需要运行一个或多个属性,则可以在JSON文件的properties值中列出并定义这些properties 。
行动 细节 runAndWait 根据作为参数传递的JSON文件中设置的详细信息,请求应用程序进程。 轮询请求,直到完成。 返回完成状态。 必需:-- --file 申请流程请求JSON文件的路径结合run和requestStatus动作。 传递JSON文件后,将请求应用程序进程(由run操作定义)并等待其完成。
runAndWait操作会在控制台中打印应用程序处理请求的每个状态更改(例如,从PENDING到EXECUTING到CLOSED )。 当进程完成(退出代码runAndWait )或代理不在线(退出代码100)时, runAndWait操作退出。
行动 细节 waitRequestCompletion 轮询请求直到完成,然后返回完成状态。 必需:-- --process 流程请求的ID 可选:-- --timeout 以分钟为单位的超时等待应用程序过程完成,然后退出并返回过程结果。 有关退出代码的列表,请参阅requestStatus表 。
--component
--version
--base组件名称
组件版本名称
要上传文件的基本目录
可选的:--include
--exclude以逗号分隔的文件列表,包括在上载中
以逗号分隔的文件列表,不包含在上载中。 这优先于包含。
行动 细节 backup 运行UrbanCode Deploy的完整备份。 备份输出是保存在结构良好的文件夹中的JSON文件列表。备份不需要任何特定的配置。 导出的JSON文件将保存到ucd.config.php配置文件中定义的输出文件夹中。 输出文件夹的结构为:
导出目录
应用领域 应用名称 组件 APPLICATION_NAME.json 蓝图 组件 componentTemplates 流程 资源 resourceTemplates 设定 行动 细节 cleanAll 从与配置文件clean.config.php中定义的特定模式匹配的未使用数据中清除UrbanCode Deploy服务器。在配置了clean.config.php文件(示例请参阅附录 )之后, cleanAll将采用此文件中定义的规则,并验证UrbanCode Deploy配置中的哪些元素与该规则匹配。
特别是, cleanAll验证UrbanCode Deploy配置的元素名称是否包含在配置文件的include部分中定义的特定模式。 如果元素名称与模式匹配,则将其删除。
exclude规则优先于include规则。 例如,如果一个元素同时被include和exclude rules所匹配,则不会从服务器中清除该元素。
例如,配置(提取):
$config['include']['component'] = ".DEV"; $config['exclude']['component'] = ".TEST"; $config['include']['application'] = ".APP"; 组件名称 清洁后 DeployPHP.DEV 已删除 (匹配".DEV" ) DeployPHP.APP 未删除 ( ".APP"仅指应用程序) DeployPHP.DEV.TEST 未删除 (匹配排除项".TEST" ) DeployPHPDEV 未删除 (模式不匹配)如果没有为特定配置元素定义任何规则,则为包括和排除都定义一个默认规则:
$config['include']['default'] $config['exclude']['default']position参数定义了应将给定模式放置在何处,以便被视为匹配。
位置值为:
start :模式在名称的开头 end :模式在名称的结尾 empty :模式在名称中的任何位置配置(提取)示例如下:
$config['include']['component'] = ".DEV"; $config['exclude']['component'] = ".TEST"; $config['include']['position'] = "end"; $config['exclude']['position'] = ""; 组件名称 清洁后 DeployPHP.DEV 已删除 (名称末尾匹配".DEV" ) DeployPHP.DEV.Deploy 未删除 ( ".DEV"不在名称末尾) DeployPHP.TEST.DEV 未删除 (即使".DEV"位于名称的末尾,也与排除项".TEST"匹配,该名称可以在名称中的任何位置) DeployPHP.DEV.TEST 未删除 (匹配排除项".TEST"和".DEV"不在名称的末尾) 行动 细节 forkApplication 分叉现有应用程序以创建具有不同后缀的新副本。 需要:--application
--old
--new
应用名称或ID
旧应用后缀
新的应用程序后缀
要派生一个应用程序,请将完全相同的应用程序复制到同一UrbanCode Deploy服务器中。 在应用程序名称和组件名称的末尾添加一个新的后缀。
在由于开发原因而有必要为UrbanCode Deploy开发新功能而又不冒破坏有效配置集风险的情况下,这可能很有用。
操作forkApplication获取应用程序名称和旧的后缀,以定义该应用程序及其相关组件和通用过程,然后创建它们的精确副本。 旧的后缀将替换为新的后缀。
例如,使用以下应用程序:
应用名称:LAMP_v1 组件: Apache_v1 MySQL_v1 PHP_v1 通用过程:Deploy_v1运行命令:
php ucommand.php --action=forkApplication --application=LAMP_v1 --old="_v1" --new="_v2"结果创建:
应用名称 :LAMP_v2 组成部分 : Apache_v2 MySQL_v2 PHP_v2 通用过程 :Deploy_v2 行动 细节 restore 从结构化的文件夹中运行UrbanCode Deploy的完整还原。 文件夹结构与备份过程生成的相同。 必需:-- --dir 恢复的源路径 可选:- --environments 如果设置为“ true”,请导入应用程序随附的环境。restore操作将重新创建已从第一台UrbanCode Deploy服务器导出到第二台UrbanCode Deploy服务器的UrbanCode Deploy配置,并使用一个由backup操作定义的文件夹作为参数。
建议对干净且空的UrbanCode Deploy服务器运行restore操作。 如果不这样做,可能会导致意外结果。
使用promoteConfig或promoteApplication行动,以导入配置为不为空的UrbanCode部署服务器。
行动 细节 restoreApplication 从JSON文件还原应用程序,或从文件夹还原应用程序及其组件。 必需:-- --file 应用程序JSON文件的路径或应用程序文件夹的路径。应用程序JSON文件应该是备份操作提供的文件。 这是由UrbanCode Deploy Web UI中的导出按钮生成的文件。
不建议对已经包含您要导入的应用程序的UrbanCode Deploy服务器运行restore操作;建议不要将其运行。 请改用promoteApplication操作。
行动 细节 restoreComponent 从JSON文件还原组件,然后创建它。 必需:-- --file 组件JSON文件的路径。组件JSON文件应该是backup操作提供的文件。 这是由UrbanCode Deploy Web UI中的导出按钮生成的文件。
不建议对已经包含您要导入的应用程序的UrbanCode Deploy服务器运行restore操作;建议不要将其运行。 使用promoteConfig或promoteApplication行动来代替。
行动 细节 restoreComponentTemplate 从JSON文件还原组件模板,然后创建它。 必需:-- --file 组件模板JSON文件的路径。组件模板JSON文件应该是backup操作提供的文件,该文件与UrbanCode Deploy Web UI的导出按钮生成的文件相同。
行动 细节 upgradeApplication 从JSON文件升级现有应用程序,或从文件夹升级应用程序及其组件。 如果目标UrbanCode Deploy服务器中缺少该应用程序(和相关组件),则创建该应用程序。 必需:-- --file 应用程序JSON文件或应用程序文件夹的路径。应用程序JSON文件应该是backup操作提供的文件,它与UrbanCode Deploy Web UI的导出按钮生成的文件相同。 升级包括环境,但不包括资源模板和蓝图。
行动 细节 upgradeComponent 从JSON文件升级现有组件。 如果目标UrbanCode Deploy服务器中缺少该组件,则创建该组件。 必需:-- --file 组件JSON文件的路径。组件JSON文件应该是backup操作提供的文件,它与UrbanCode Deploy Web UI的导出按钮生成的文件相同。
行动 细节 upgradeComponentTemplate 从JSON文件升级组件模板。 如果组件模板不在目标UrbanCode Deploy服务器中,则将创建它。 必需:-- --file 组件模板JSON文件的路径。组件模板JSON文件应该是backup操作提供的文件,该文件与UrbanCode Deploy Web UI的导出按钮生成的文件相同。
环境JSON文件的结构应与模板中定义的环境创建相同 。
如果发生以下情况之一, createEnvironment操作将失败:
应用程序不存在 环境名称已存在 蓝图没有退出 基础资源不存在 行动 细节 exportEnvironmentProperties 导出环境属性并将其保存到JSON文件中。 必需:- --environment 环境ID或名称 可选:-- --application 申请编号或名称当将环境ID作为参数传递时,uCommand会将环境属性导出到JSON文件中。 如果传递了环境名称,则还需要应用程序名称。 如果多个组件使用相同的值,则将属性组合到一个文件中。 如果将属性设置为安全 ,则该值将导出为四星(****),以避免暴露密码。 例如:
{ "propertyName":"PROPERTY_NAME", "value":"PROPERTY_VALUE", "secure":false, "components":[ "COMPONENT_1", "COMPONENT_2", "COMPONENT_3" ] }, { "propertyName":"PROPERTY_NAME", "value":"****", "secure":true, "components":[ "COMPONENT_1" ] }, 行动 细节 importEnvironmentProperties 将环境属性从导出的JSON文件导入到现有环境中。 需要:--file
--environment
使用exportEnvironmentProperties导出的JSON文件的exportEnvironmentProperties
环境ID或名称当将环境ID作为参数传递时,uCommand将环境属性导入到JSON文件中。 如果传递了环境名称,则还需要应用程序名称。 JSON文件的结构应按照动作exportEnvironmentProperties定义进行构造。 可以设置任何属性值,每个属性一个,一组批次一个。
如果安全属性值设置为****(屏蔽的安全值),则uCommand无法导入它,它将中止操作,提示用户执行操作。 要导入安全属性值,用户需要手动将其设置为JSON文件。
警告 :在JSON文件中手动设置的任何安全属性值(例如密码)均以纯文本形式显示。 导入后,UrbanCode Deploy会加密这些值,并从Web UI中隐藏它们。 我们建议您在导入后清理JSON文件,以避免任何数据泄露。
升级操作需要一个有效的promote.config.php文件:
php ucommand.php --action=config --origin={{ORIGIN_ALIAS}} --destination={{DESTINATION_ALIAS}}按照设置uCommand中的定义使用别名。
这两个别名都需要有效的配置,并且应该在/ config / servers文件夹中可用。
行动 细节 promoteApplication 将应用程序从一台UrbanCode Deploy服务器升级到另一台。 必需:- --application 应用名称或ID当将应用程序名称作为参数传递时,uCommand会验证该应用程序是否可从源服务器获取,导出该应用程序并将其导入到目标服务器。
如果目标UrbanCode Deploy服务器中缺少该应用程序,则创建该应用程序; 否则,将升级现有应用程序。
promoteApplication操作将导入或升级应用程序随附的所有组件,组件模板,流程,资源模板和蓝图。 环境将不会导入。
行动 细节 promoteConfig 将整个UrbanCode Deploy配置从一台服务器升级到另一台服务器。 如果可选参数设置为clean ,则不会导入环境。 可选的:--dir
--environments
如果提供了目录,请从那里还原配置。
如果设置为true ,则导入应用程序随附的环境。
该promoteConfig动作下载从源服务器整个UrbanCode部署配置(如完成backup操作)。 然后将配置导入到目标服务器。 它涵盖了以下方面的推广:
应用领域 组件 资源模板 Craft.io流程 环境(除非设置了clean参数)创建缺少的元素。 现有元素已升级。
行动 细节 promoteResourceTemplate 提升资源模板的名称或ID。 必需:-- --template 资源模板名称或ID当将资源模板名称或ID作为参数传递时,uCommand从原始服务器导出资源模板,然后将资源模板导入到目标服务器。
如果目标服务器中不存在资源模板,则将创建该模板; 否则,将对其进行升级以反映与原始服务器相同的结构。
行动 细节 promoteSnapshot 根据配置文件中设置的详细信息,将快照从一台UrbanCode Deploy服务器升级到第二台。 此处包含组件版本的创建。 必需:- --snapshot 快照名称 可选:-- --force 如果设置为true ,则即使所有组件版本均已存在,也会强制创建快照。当两台UrbanCode Deploy服务器上具有相同的应用程序时,uCommand可以:
检查服务器配置文件中为promove.config.php中设置的别名定义的应用程序是否在两个服务器中都存在 检查目标服务器中是否所有必需的组件都可用 检查目标服务器中快照是否尚不可用 从原始服务器(包括工件)导出快照 在目标服务器的快照中创建列出的组件版本 上载与组件版本相关的所有工件 在目标服务器中创建快照如果目标服务器中已经存在所有组件版本,则不会创建快照,除非您设置参数force 。
createSnapshot操作基于作为参数传递的JSON文件中定义的描述创建快照。 有关所需的JSON文件示例,请参见附录 。
如果UrbanCode Deploy服务器缺少JSON文件中列出的组件版本,则快照创建失败。
行动 细节 createVersion 创建一个新的组件版本。 需要:--component
--version
组件名称或组件ID
版本名称
可选:-- --description 版本说明createVersion操作会在给定组件名称和版本名称的情况下创建组件版本。 如果版本已经存在,则操作失败。
注意 :此API不会将文件(工件)添加到版本中。
行动 细节 createVersionAddFiles 创建一个新的组件版本并添加工件文件。 需要:--component
--version
--base
组件名称
组件版本名称
要上传文件的基本目录
可选的:--include
--exclude
以逗号分隔的文件列表,包括在上载中
以逗号分隔的文件列表,不包含在上载中。 这优先于包含。
将动作createVersion与动作addVersionFiles结合addVersionFiles 。 当将组件名称,版本和基本目录作为参数传递时,将创建新的组件版本,并将随附的工件附加到基本目录中。 使用include和exclude选项,可以过滤要上传到版本的文件。
行动 细节 c 获取一个包含快照配置PHP或JSON文件。 获取列出的组件版本并创建它们。 之后,它将创建快照。 这还将文件(工件)添加到创建的组件版本中。 必需:-- --file 快照配置文件(PHP或JSON)组合动作createSnapshot和createVersion 。 当作为参数传递时,快照JSON文件(如附录中所定义)将创建缺少的组件版本,上传工件并创建快照。
注意 :如果所有组件版本或快照已经存在,则创建失败。
行动 细节 setSnapshotStatus 设置快照状态。 状态可以是“通过”或“失败”。 需要:--snapshot
--status
快照名称
快照状态:已通过| 失败的
setSnapshotStatus操作将快照设置为“通过”或“失败”。 这意味着快照将根据已作为参数传递的状态进行重命名,例如:
php ucommand.php --action=setSnapshotStatus --snapshot="TestSnapshot" --status="PASSED"结果将快照重命名为TestSnapshot_PASSED。
如果已经设置了快照,则setSnapshotStatus操作将接受带有或不带有状态的快照名称,例如:
php ucommand.php --action=setSnapshotStatus --snapshot="TestSnapshot_FAILED" --status="PASSED"和:
php ucommand.php --action=setSnapshotStatus --snapshot="TestSnapshot" --status="PASSED"都成功,并生成快照TestSnapshot_PASSED。
本节列出了不属于本文已经讨论的任何类别的操作。
要创建团队,请在UrbanCode部署设置页面上单击安全性 > 团队 。
使用addTeamToComponent将团队关联到组件。 如果未指定名称或ID,则会添加所有可用组件。
行动 细节 addTeamToComponent 向团队添加一个组件。 如果未将组件名称/ ID作为参数传递,则UrbanCode Deploy中所有可用的组件都将添加到团队中。 必填: --team 队伍名称或编号 可选:-- --component 组件名称或ID使用addTeamToResource将团队与特定资源相关联。 如果未设置资源名称/ ID,则团队将与UrbanCode Deploy中的所有可用资源相关联。
行动 细节 addTeamToResource 向团队添加资源。 如果没有将资源作为参数传递,则UrbanCode Deploy中可用的所有资源都将添加到团队中。 必填: --team 队伍名称或编号 可选:-- --resource 资源名称或IDaddTeamToAll适用于以下元素:
代理商 代理池 应用领域 云连接 组件 组件模板 环境环境 Craft.io流程 资源资源 资源模板 行动 细节 addTeamToAll 将团队分配给整个UrbanCode Deploy配置。 必填: --team 队伍名称或编号使用config ,可以将每个别名设置为在uCommand中用于默认操作(别名)和升级操作(目的地和来源)。 您可以同时设置一个或多个。 必须输入有效的别名。
行动 细节 config 配置要在uCommand中使用的别名。 可选的:--alias
--destination
--origin
用作默认名称的别名
用作目的地的别名
用作来源的别名
行动 细节 ver 打印有关uCommand和受支持的UrbanCode Deploy版本的信息。在本文中,您学习了如何检索,配置和使用uCommand作为命令行工具在UrbanCode Deploy上执行操作。 使用提供的详细API,您学习了如何执行基本任务以及如何使用UrbanCode Deploy服务器管理复杂的任务集。 有了这些知识,您就可以从命令行终端和Web UI进行工作。 uCommand使您可以通过一个命令灵活地执行复杂的任务。 使用uCommand,您可以轻松地在服务器之间复制数据,并与他人快速共享现有应用程序。
查找示例,模板和升级值。
$ snapshot作为数组的必需内容:
$snapshot [ 'snapshot' ] [ 'name' ] = SNAPSHOT_NAME $snapshot [ 'application' ] = APPLICATION_NAME $snapshot [ 'snapshot' ] [ 'description' ] = SNAPSHOT_DESCRITPTION $snapshot [ 'components' ] = array ( COMPONENT => VERSION ) $snapshot [ 'artifacts' ] = array ( COMPONENT => array ( 'base' = BASE_DIRECTORY, 'include' = array ( INCLUDED_FILES_AND_DIRECTORIES ), 'exclude' = array ( EXCLUDED_FILES_AND_DIRECTORIES ) ) )$ snapshot的必需内容作为JSON文件
{ "snapshot" : { "name" : SNAPSHOT_NAME , "description" : SNAPSHOT_DESCRIPTION }, "application" : APPLICATION_NAME , "components" : { COMPONENT : VERSION , COMPONENT : VERSION , }, "artifacts" : [ { COMPONENT : { 'base' : BASE_DIRECTORY, 'include' : { INCLUDED_FILES_AND_DIRECTORIES }, 'exclude' : { EXCLUDED_FILES_AND_DIRECTORIES } } ] }翻译自: https://www.ibm.com/developerworks/library/d-perform-complex-tasks-uCommand-trs/index.html