云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

2022世界杯阿根廷预选赛赛程资源是所有管道的关键构建块之一。它们是用于跨步骤和管道存储和交换信息的信息实体。

2022世界杯阿根廷预选赛赛程资源有版本控制,每个版本都是不可变的。它们也是全局的,并且取决于为管道源定义的范围,它们可以跨管道使用,这使您能够将多个管道连接在一起以创建一个管道中的管道


2022世界杯阿根廷预选赛赛程资源是指针,它们可以用来引用:

  • 源代码控制系统中的存储库,例如GitHub
  • 远程文件服务器上的文件
  • Docker图像
  • JFrog发行版的发布包
  • 用于容器业务流程的集群


使用管道中的2022世界杯阿根廷预选赛赛程资源包括两个主要步骤:

  1. 在YAML的管道中,在2022世界杯阿根廷预选赛赛程节中,定义运行管道所需的所有资源。2022世界杯阿根廷预选赛赛程
    定义了资源之后,就可以根据为管道源定义的范围在管道中使用了。
  2. 步骤部分,按照您的工作流,将这些资源添加为2022世界杯阿根廷预选赛赛程输入和/或输出

资源范围和可见性

管道资源与定义它们2022世界杯阿根廷预选赛赛程的管道源具有相同的作用域。

在定义资源时,推荐的方法是在2022世界杯阿根廷预选赛赛程同一个项目中跨环境共享的管道源中定义它们。这确保了资源在项目中的各个环境中都是可用的。2022世界杯阿根廷预选赛赛程有关更多信息,请参见创建项目-管道资源2022世界杯阿根廷预选赛赛程

目前,管道资源不能跨项目共享。2022世界杯阿根廷预选赛赛程


资源类型

2022世界杯阿根廷预选赛赛程资源根据使用的位置和方式发挥不同的作用:

管道支持几种类型的资源,每种资源都能够服务于特定的活动:2022世界杯阿根廷预选赛赛程

类型 描述

Aql

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世界杯阿根廷预选赛赛程源定义在管道YAML2022世界杯阿根廷预选赛赛程标记,如下所示。在定义资源并将其提交给源代码控制之后,将根据为管道源定义的范围在管道中使用它。

跨环境共享资源2022世界杯阿根廷预选赛赛程

在定义资源时,推荐的方法是在2022世界杯阿根廷预选赛赛程同一个项目中跨环境共享的管道源中定义它们。这确保了资源在项目中的各个环境中都是可用的。2022世界杯阿根廷预选赛赛程有关更多信息,请参见创建项目-管道资源2022世界杯阿根廷预选赛赛程

虽然每个资源都有自己特定的配置,但它们都需要一个名字和一个类型

YAML模式
2022世界杯阿根廷预选赛赛程资源:—name:  type: <资源类型名称> configuration: 

标签

使用说明

必需的/可选

名字

一个字母数字字符串(允许使用下划线),可以轻松推断资源所代表的内容。此名称用于引用步骤中的资源,并且必须在JFrog Pipelines Project中的所有存储库中惟一。

例子aws_creds来表示AWS密钥。

  • 在管道执行同步后,建议不要更改资源的名称。如果您更改了资源的名称,它将被视为一个新资源,并且它的所有版本历史都会丢失。此外,资源的名称需要在管道中出现的所有位置进行更新。
  • 在管道的范围内(跨项目或环境),没有两个资源可以共享相同的名称。2022世界杯阿根廷预选赛赛程
要求
类型

项目名称资源类型该资源是其实例。

管道执行同步后,其类型不能被修改。

要求
配置

指定配置设置,各有不同类型的资源。

此块中通常包含一个用于赋值对象的设置集成资源将通过它进行身份验证和访问。集成必须与类型资源的。集成字段的名称将因资源而异。

要求

示例-资源定义

的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分段的一步。

YAML模式
步骤:—name:  type:  configuration: inputResou2022世界杯阿根廷预选赛赛程rces:—name: <资源名> trigger:  # default true newVersionOnly:  # default false branch:  #参见下面的defaults描述

标签

使用说明

必需的/可选

名字

将用作步骤输入的已声明资源的名称。

要求
触发

触发设置为真正的默认情况下更改为命名资源2022世界杯阿根廷预选赛赛程触发一个步骤的执行。这可以通过声明来更改触发作为

可选
newVersionOnly

设置newVersionOnly作为真正的如果输入资源在当前运行中没有更新,则将导致跳过某个步骤。

如果有多个input2022世界杯阿根廷预选赛赛程ResourcesnewVersionOnly:真,当为none时才跳过该步骤更新资源的。2022世界杯阿根廷预选赛赛程如果至少更新了一个资源,则不会跳过该步骤。2022世界杯阿根廷预选赛赛程

可选
分支

一个分支仅当使用来自多分支源的另一个分支的资源时才需要。默认情况下,将使用来自单个分支源或多分支管道的同一分支的资源。若要在单分支管道中使用多分支资源,或在多分支管道中使用另一个分支,分支应用于指定资源所属的分支。

可选
示例-输入资源定义
步骤:—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标记并设置为真正的.在运行期间,只有在资源更新时才会触发该步骤。如果没有更新资源,则跳过该步骤,并跳过所有下游步骤。

例1 - 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

2022世界杯阿根廷预选赛赛程资源:名称:S_WF_012_resource类型:PropertyBag配置:runNumber: 0管道:-名称:pipeline_S_WF_012_001步骤:-名称:S_WF_012_input1类型:Bash配置:outputResources: -名称:S_WF_012_resource执行:onExecute: #——write_output S_WF_012_resource runNumber = $ {run_number} -回声“测试”名称:step1类型:Bash配置:inputResources: -名称:S_WF_012_resource newVersionOnly:真正的执行:onExecute: -回声“测试”名称:步骤2类型:Bash配置:input2022世界杯阿根廷预选赛赛程Resources:—name: S_WF_012_resource execute: onExecute:—echo "test"


使用特定版本手动触发

可以通过为输入资源选择特定版本来定制运行。有关更多信息,请参见使用自定义参数触发运行

绑定资源版本

类的最新或最新版本默认情况下,Pipelines使用运行作业时输入资源。但是,在某些情况下,您可能希望使用输入资源的特定版本来运行。这被称为固定,可以使用YAML配置固定输入版本。当解除某个资源版本时,它将在后续所有运行中切换到使用最新版本。

资源版本号有一个全局序列,可以在资源选项卡。有关更多信息,请参见查看资源2022世界杯阿根廷预选赛赛程

在YAML中固定资源版本

您可以使用标签来固定一个特定的输入版本,如下所示:

例子
2022世界杯阿根廷预选赛赛程resources:—name:  type: DistributionRule configuration: pin: versionId: 

以下资源支持版本固定:2022世界杯阿根廷预选赛赛程

输出资源2022世界杯阿根廷预选赛赛程

输出资源是按步2022世界杯阿根廷预选赛赛程骤生成或更改的资源。当指定为步骤的输出时,资源接收步骤的输出。如果需要,这个输出资源可以在同一个管道或另一个管道的后续步骤中用作输入资源。输出资源也可以通过其名称作为步骤执行的shell命令中的参数来引用。

输出资源定义

属性中添加资源,可以将其指定为步骤的输出output2022世界杯阿根廷预选赛赛程Resources分段的一步。

YAML模式
步骤:—name:  type:  configuration: outputResou2022世界杯阿根廷预选赛赛程rces:—name: <资源名> branch:  #参见下面默认值的描述

标签

使用说明

必需的/可选

名字

要用作步骤输入的已声明资源的名称。

要求
分支

一个分支只需要来自多分支源的另一个分支的资源。2022世界杯阿根廷预选赛赛程默认情况下,假定来自单个分支源或多分支管道的同一分支的资源。要更新单分支管道中的多分支资源或多分支管道中的另一个分支,分支应用于指定资源所属的分支。

可选
示例-输出资源定义
步骤:—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失效时。

重置资源。

  1. 在管线视图中,单击资源,然后单击c舔的重置按钮。
  2. 点击确认


资源的高级使用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世界杯阿根廷预选赛赛程AqlDistributionRule,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
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。加载扩展资源后,管道中的任何步骤都可以使用它。有关更多信息,请参见管道扩展资源模型

  • 没有标签
版权所有©2022 JFrog Ltd.