资源范围和可见性
管道资源与定义它们2022世界杯阿根廷预选赛赛程的管道源具有相同的作用域。
在定义资源时,推荐的方法是在2022世界杯阿根廷预选赛赛程同一个项目中跨环境共享的管道源中定义它们。这确保了资源在项目中的各个环境中都是可用的。2022世界杯阿根廷预选赛赛程有关更多信息,请参见创建项目-管道资源2022世界杯阿根廷预选赛赛程.
目前,管道资源不能跨项目共享。2022世界杯阿根廷预选赛赛程
资源类型
2022世界杯阿根廷预选赛赛程资源根据使用的位置和方式发挥不同的作用:
- 引发的资源:每当这种类型的资源发生变化时,它就会触发依赖步骤。例子:Cron触发器,GitRepo,IncomingWebhook.
- 生成的资源:这些是由步骤生成的资源2022世界杯阿根廷预选赛赛程,它们可以触发后续的下游步骤。例子:Aql,BuildInfo,文件规范,图像.
- Webhook资源:IncomingWebhook而且OutgoingWebhook是可用于2022世界杯阿根廷预选赛赛程将管道与第三方服务集成的资源。
管道支持几种类型的资源,每种资源都能够服务于特定的活动:2022世界杯阿根廷预选赛赛程
类型 | 描述 |
---|---|
Aql资源使用Artifactory查询语言指定一个Artifactory查询。 |
|
BuildInfo | BuildInfo资源是与Artifactory中的构建相关联的元数据。 |
Cron触发器 | CronTrigger用作步骤的输入资源,在预定的时间触发步骤的执行。 |
DistributionRule | DistributionRule资源是一组Destination规则,可以应用于使用JFrog Distribution分发发布包。 |
FileSpec资源指定一个FileSpec,它提供了要从Artifactory上传或下载的文件的详细信息。 |
|
GitRepo | GitRepo用于将JFrog管线连接到源代码控制存储库。它为repo创建了一个webhook,以便将来的提交将自动创建一个带有webhook有效负载的新版本。 |
HelmChart | HelmChart资源映射到Artifactory Helm Repository中的特定图表。 |
图像 | Image资源用于将Docker映像的引用添加到管道中。 |
IncomingWebhook | 只要使用HTTP POST方法调用关联的URL, IncomingWebhook资源就可以触发管道中的一个或多个作业。 |
OutgoingWebhook | OutgoingWebhook资源使用HTTP通过OutgoingWebhook Integration将信息从步骤发送到外部API端点。 |
PropertyBag | PropertyBag资源用于将信息从一个管道传递到另一个管道,并以资源的格式向步骤提供环境变量。 |
ReleaseBundle | ReleaseBundle资源指定了Artifactory中的一组工件,这些工件作为JFrog Distribution ReleaseBundle分发到Artifactory Edge节点。 |
RemoteFile | RemoteFile资源允许使用远程文件服务器上的文件。 |
VmCluster | VmCluster用于表示一组虚拟机。它主要用于将服务/应用程序部署到指定的集群,在某些情况下,它可以用于在整个集群上运行某些维护活动。 |
资源版本
管线资源的关键特性之一是版本控制。资源版本对c很有用控制管道的流动并跟踪资源随时间的变化。你不能Rigger使用特定版本或跳过步骤在同一次运行中,当输入资源没有更新时。2022世界杯阿根廷预选赛赛程
每个资源都从初始版本开始,每次资源更改时都会更新初始版本。例如,的版本图像每当一个新标签被推送到Docker映像时,管道中使用的资源就会被更新。管道通过更新资源版本来跟踪这些更改,这是基于为特定资源接收的元数据。
创建新资源版本时:
- 资源定义在管道YAML文件中更新。
- 在运行期间更新输出资源。
- 有一个外部事件,比如推送一个提交到git存储库。
资源的每个版本都是不可变的,并且在每次使用特定版本运行时返回相同的结果。默认情况下,步骤总是使用输入资源的最新版本运行。但是,由于资源是版本化的,并且保存了所有可用版本的整个历史,因此可以对运行进行定制,以使用资源的特定版本。更多的我信息,请参阅使用自定义参数触发运行.
资源版本的默认行为
资源版本有以下默认行为:
- 最新版本:当运行被触发时,在该运行中使用输入资源的最新版本。
同一管道中的相关步骤:在跑步时,即使输入资源没有更新(没有新版本),依赖步骤将被触发。虽然这是默认行为,但可以通过设置
newVersionOnly
标记为真正的
.此参数仅适用于生成的资源2022世界杯阿根廷预选赛赛程,它们是连接管道的两个步2022世界杯阿根廷预选赛赛程骤的资源。
- 另一个管道中的相关步骤:在运行过程中,只有当连接管道的资源有新版本时才会触发依赖管道。
示例—资源版本
这是一个简单的单步管道GitRepo作为步骤的输入资源。
在这个例子中:
- 第一个版本:当管道第一次同步和加载时,Git存储库上的最新提交将作为Gitrepo资源的第一个版本。
当触发第一次运行时,该资源版本将用于运行。 - 第二个版本:当一个新的提交被推送到Git存储库时,Gitrepo资源被更新为新版本,成为该资源的最新版本。
Git提交会自动触发运行,而该资源的第二个版本(现在是最新版本)将用于运行。
创建资源2022世界杯阿根廷预选赛赛程
所有的资2022世界杯阿根廷预选赛赛程源定义在管道YAML下2022世界杯阿根廷预选赛赛程
标记,如下所示。在定义资源并将其提交给源代码控制之后,将根据为管道源定义的范围在管道中使用它。
跨环境共享资源2022世界杯阿根廷预选赛赛程
在定义资源时,推荐的方法是在2022世界杯阿根廷预选赛赛程同一个项目中跨环境共享的管道源中定义它们。这确保了资源在项目中的各个环境中都是可用的。2022世界杯阿根廷预选赛赛程有关更多信息,请参见创建项目-管道资源2022世界杯阿根廷预选赛赛程.
虽然每个资源都有自己特定的配置,但它们都需要一个的名字
和一个类型
.
2022世界杯阿根廷预选赛赛程资源:—name:type: <资源类型名称> configuration:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
的名字 |
一个字母数字字符串(允许使用下划线),可以轻松推断资源所代表的内容。此名称用于引用步骤中的资源,并且必须在JFrog Pipelines Project中的所有存储库中惟一。 例子:
|
要求 |
类型 |
项目名称资源类型该资源是其实例。 管道执行同步后,其类型不能被修改。 |
要求 |
配置 |
指定配置设置,各有不同 此块中通常包含一个用于赋值对象的设置集成资源将通过它进行身份验证和访问。集成必须与 |
要求 |
示例-资源定义
的YAML定义GitRepo而且图像2022世界杯阿根廷预选赛赛程资源:
例1 - GitRepo资源
2022世界杯阿根廷预选赛赛程resources:—name: gitrepo_trigger type: GitRepo configuration: gitProvider: my_github path: myuser/repo-name branches: include: master
例2 -镜像资源
2022世界杯阿根廷预选赛赛程resources:—name: Image_1 type:镜像配置:registry: PSSG_DockerRegistry imageName: docker/jfreq_win imageTag:最新autoPull: true
修改资源2022世界杯阿根廷预选赛赛程
在pipeline中,资源及2022世界杯阿根廷预选赛赛程其版本紧密耦合。因此,当删除资源时,其历史数据将受到永久影响。这可能会打乱你的DevOps装配线,因为这是一个相互依存的工作流。
编辑资源时遵循以下规则:2022世界杯阿根廷预选赛赛程
- 如果修改了资源的名称,则将其视为新资源。
- 一个资源的
类型
不可修改。
利用资源2022世界杯阿根廷预选赛赛程
在管道中,步骤可以这样使用资源:2022世界杯阿根廷预选赛赛程
输入和输出资源可以来自与管道相同的2022世界杯阿根廷预选赛赛程管道源,也可以来自同一项目和环境中的另一个管道源。
输入资源2022世界杯阿根廷预选赛赛程
输入资源使您2022世界杯阿根廷预选赛赛程能够在步骤和管道之间创建依赖关系。具有来自其他管道的输入资源的步骤在资源更新时2022世界杯阿根廷预选赛赛程触发管道的运行。默认情况下,作为同一运行中另一个步骤2022世界杯阿根廷预选赛赛程的输出资源的输入资源将运行,无论该资源是否更新。资源也可以通过其名称作为步骤执行的shell命令中的参数来引用。
输入资源定义
属性中将资源指定为步骤的输入input2022世界杯阿根廷预选赛赛程Resources
分段的一步。
步骤:—name:type: configuration: inputResou2022世界杯阿根廷预选赛赛程rces:—name: <资源名> trigger: # default true newVersionOnly: # default false branch: #参见下面的defaults描述
标签 |
使用说明 |
必需的/可选 |
---|---|---|
的名字 |
将用作步骤输入的已声明资源的名称。 |
要求 |
触发 |
|
可选 |
newVersionOnly |
设置 如果有多个 |
可选 |
分支 |
一个 |
可选 |
步骤:—name: step_1 type: Bash configuration: inputResou2022世界杯阿根廷预选赛赛程rces:—name: my_app_repo trigger: false # optional;newVersionOnly: true #可选;默认为false分支:master #可选
使用输入资源2022世界杯阿根廷预选赛赛程
本节提供有关使用输入资源操作管道运行的各种方式的信息。2022世界杯阿根廷预选赛赛程
跳过所有提交的自动触发
默认情况下,对输入资源的更改将触发相关步骤的执行。例如,当一个步骤指定一个GitRepo资源,任何提交到Git存储库的新代码都会自动执行该步骤。然而,t他的行为可以通过宣布来改变触发
作为假
(见下文).现在,即使更新了资源,也不会触发依赖步骤。当您不想部署每个新构建时,这对于生产管道特别有用。
如果一个步骤不是自动触发的,触发:
假
必须为步骤中的所有输入资源设置。2022世界杯阿根廷预选赛赛程
即使触发
设置为假
,该步骤仍然接收webhook更新。这确保当它被手动触发时,它使用最新的提交。
管线:—name: java_pipeline steps:—name: step_1 type: Bash configuration: inputResources:—2022世界杯阿根廷预选赛赛程name: my_app_repo trigger: false—name: cron_trigger trigger: false execute: onExecute:—pushd $res_my_app_repo_resourcePath—./execute.sh—popd .sh配置文件
当触发
设置为假
时,连接输入资源和步骤的线显示为虚线。
触发:假 |
触发:真 |
|
---|---|---|
|
|
仅在新版本上自动触发
每当资源发生更改时,都会更新其版本并触发依赖步骤。这是所有输入资源的默认行为。2022世界杯阿根廷预选赛赛程若要在未更新输入资源时跳过运行中的步骤,请添加2022世界杯阿根廷预选赛赛程newVersionOnly
标记并设置为真正的
.在运行期间,只有在资源更新时才会触发该步骤。如果没有更新资源,则跳过该步骤,并跳过所有下游步骤。
管线:—name: java_pipeline steps:—name: step_1 type: Bash configuration: inputResources:—2022世界杯阿根廷预选赛赛程name: my_app_repo—newVersionOnly: true执行:onExecute:—pushd $res_my_app_repo_resourcePath—./execute.sh—popd .sh
使用特定版本手动触发
可以通过为输入资源选择特定版本来定制运行。有关更多信息,请参见使用自定义参数触发运行.
绑定资源版本
类的最新或最新版本默认情况下,Pipelines使用运行作业时输入资源。但是,在某些情况下,您可能希望使用输入资源的特定版本来运行。这被称为固定,可以使用YAML配置固定输入版本。当解除某个资源版本时,它将在后续所有运行中切换到使用最新版本。
资源版本号有一个全局序列,可以在资源选项卡。有关更多信息,请参见查看资源2022世界杯阿根廷预选赛赛程.
在YAML中固定资源版本
您可以使用销
标签来固定一个特定的输入版本,如下所示:
2022世界杯阿根廷预选赛赛程resources:—name:type: DistributionRule configuration: pin: versionId:
以下资源支持版本固定:2022世界杯阿根廷预选赛赛程
输出资源2022世界杯阿根廷预选赛赛程
输出资源是按步2022世界杯阿根廷预选赛赛程骤生成或更改的资源。当指定为步骤的输出时,资源接收步骤的输出。如果需要,这个输出资源可以在同一个管道或另一个管道的后续步骤中用作输入资源。输出资源也可以通过其名称作为步骤执行的shell命令中的参数来引用。
输出资源定义
属性中添加资源,可以将其指定为步骤的输出output2022世界杯阿根廷预选赛赛程Resources
分段的一步。
步骤:—name:type: configuration: outputResou2022世界杯阿根廷预选赛赛程rces:—name: <资源名> branch: #参见下面默认值的描述
标签 |
使用说明 |
必需的/可选 |
---|---|---|
的名字 |
要用作步骤输入的已声明资源的名称。 |
要求 |
分支 |
一个 |
可选 |
步骤:—name: step_2 type: Bash configuration: outputResou2022世界杯阿根廷预选赛赛程rces:—name: my_repo branch: master
在界面中查看资源2022世界杯阿根廷预选赛赛程
在管道的YAML文件之后提交到存储库,将存储库添加到管线通过用户界面.T管道平台然后通过源代码控制webhook监视更改(作业添加、编辑或删除)。YAML更改会自动同步,并立即反映在UI中。
在管道源成功同步YAML文件之后,选择应用程序|我的管道查看管道。
在管线视图中:
- 每个资源显示为圆形图标
- 单击资源将显示特定于该资源的信息
- 点击YAML图标→2022世界杯阿根廷预选赛赛程选项卡显示
2022世界杯阿根廷预选赛赛程
管道的定义
自动触发步骤的资源用实线表示(见下文)。属性时,此值变为虚线触发
标记的输入资源设置为假
.有关更多信息,请参见自动触发.
重置资源版本
如果资源处于无效状态,您可以选择重置它,这将删除该资源的所有以前版本。例如,当源存储库使GitRepo资源使用的SHA失效时。
重置资源。
- 在管线视图中,单击资源,然后单击c舔的重置按钮。
- 点击确认.
资源的高级使用2022世界杯阿根廷预选赛赛程
在管道中,资源的作用超出了输入和输出。以下是使用管道中的资源的其他几种方式。2022世界杯阿根廷预选赛赛程
在环境变量中2022世界杯阿根廷预选赛赛程使用资源值
指定资源的步骤可以通过环境变量访问资源及其属性。
- 这些环境变量有一个标准的命名约定:
res_ <资源名称> _ <标记>
- 这可以进一步扩展,以访问资源中指定的集成:Res_
_<集成标签名称>_<标签> . sh
例子
如果a的定义GitRepo资源命名
app_gitrepo
如下:GitRepo资源定义2022世界杯阿根廷预选赛赛程资源:—name: app_gitRepo type: GitRepo configuration: path: user1/repo1 gitProvider: myGitProvider
环境变量定义如下:
环境变量
结果
描述
res_app_gitRepo_path
user1 / repo1 返回 路径
属性。app_gitRepo
资源res_app_gitRepo_gitProvider_url
返回 url
的Git提供程序的app_gitRepo
资源属性的步骤可以使用以下环境变量
app_gitRepo
资源作为输入:环境变量步骤:—name: build_app type: MvnBuild configuration: sourceLocation:。mvnCommand: clean install configFileLocation:。input2022世界杯阿根廷预选赛赛程Resources: - name: app_gitRepo #使用app_gitRepo资源执行:onSuccess: - send_notification notifySlack——text "Maven build completed for $res_app_gitRepo_path at $res_app_gitRepo_gitProvider_url" onFailure: - send_notification notifySlack——text "Maven build FAILED for $res_app_gitRepo_path at $res_app_gitRepo_gitProvider_url"
使用数组
某些资源,如2022世界杯阿根廷预选赛赛程Aql,DistributionRule,VmCluster在它们的配置中包含数组。
- 对于资源中的数组(2022世界杯阿根廷预选赛赛程VmCluster):
Res_ <资源名称>_<数组标题>_len(这告诉你数组中有多少项)
Res_ <资源名称>_<数组标题>_0
Res_ <资源名称>_<数组标题>_1
Res_ <资源名称>_<数组标题>_2
- 对于资源中的对象数组(2022世界杯阿根廷预选赛赛程DistributionRule):
Res_ <资源名称>_<数组标题>_len(这告诉你数组中有多少项)
Res_ <资源名称>_<数组标题>_0_<标签> .
Res_ <资源名称>_<数组标题>_1 <标签> .
使用有状态资源2022世界杯阿根廷预选赛赛程
2022世界杯阿根廷预选赛赛程资源是有状态的实体,在管道之间持久存在,从而支持在管道之间传递信息。这在创建管道的管道时特别有用。
方法可以在资源中存储任何键-值对数据write_output
效用函数。然后可以引用这些值作为环境变量的任何后续切割步骤,使用该资源作为输入。因此,在管道运行过程中,一个步骤可以将信息传递给另一个步骤。
存储值的环境变量的格式为Res_ <资源名>_<键名> . properties . properties
.
例子
下面的示例在资源中创建三个属性模板
.
write_output myImage sport="baseball" equipment="bat" field="diamond"
当在步骤中指定资源时input2022世界杯阿根廷预选赛赛程Resources
,这些属性可以作为以下环境变量访问:
$ printenv res_myImage_baseball棒球$ printenv res_myImage_equipment bat $ printenv res_myImage_field钻石
有关更多信息,请参见创建有状态管道.
使用扩展资源2022世界杯阿根廷预选赛赛程
扩展资源允许管道用户2022世界杯阿根廷预选赛赛程通过指定自己的资源类型来扩展管道DSL。加载扩展资源后,管道中的任何步骤都可以使用它。有关更多信息,请参见管道扩展资源模型.