云客户?
免费开始>
在MyJFrog >中升级
云b>的新功能





概述

JFrog Pipelines的一个关键特性是能够创建相互连接的管道,称为管道的管道,可以跨越几个不同的团队、技术平台和工具,使团队能够在相互依赖的项目上进行协作。

考虑SDLC的不同阶段,例如开发、测试、部署到登台、部署到产品,等等,每个团队创建数十甚至数百个单独的软件管道。管道的管道使您能够轻松地连接这些管道,以创建端到端工作流并跨管道交换信息。可以相互连接的管道数量没有限制。可以使用全局资源轻松创建管道的管道2022世界杯阿根廷预选赛赛程,其中管道更新资源,该资源用作触发下游管道的输入。

在创建了管道的管道之后,您可以在r中查看端到端工作流实时、交互式管道仪表板,带有警报和通知,可以轻松识别和升级瓶颈和故障。

页面内容


创建管道的管道

要创建一个管道的管道,你需要:

  • 至少两条管道
  • 连接这些管道的资源

就像使用资源连接依赖步骤一样,依赖管道也是使用资源连接的。2022世界杯阿根廷预选赛赛程

在下面的图像中,第一个管道(app_dev_pipeline)以输出资源结束app_buildinfo。第二个管道(app_prod_pipeline)从相同的资源开始,使用它作为输入资源。


默认情况下,在运行期间,仅当连接管道的资源有新版本时才触发依赖管道。

例子

这里有两个例子显示管道的管道。

示例1

此示例显示了包含八个管道的管道的管道,这些管道使用PropertyBag资源。

在这个例子中:

  • 有三个PropertyBag2022世界杯阿根廷预选赛赛程资源:

    2022世界杯阿根廷预选赛赛程—name: runpopprop type: PropertyBag配置:key1: value1 key2: value2—name: runpopprop2 type: PropertyBag配置:key1: value1 key2: value2—name: runpopprop3 type: PropertyBag配置:key1: value1 key2: value2
  • 共有8条相互连接的管道:

    管道:-名称:触发器步骤:-名称:触发器类型:Bash配置:outputResources: -名称:runpopprop执行:onExecute: - write2022世界杯阿根廷预选赛赛程_output runpopprop runId=$run_number -名称:TRIGGER_OUT_1_1步骤:-名称:TRIGGER_OUT_1类型:Bash配置:inputResources: -名称:runpopprop outputResources: -名称:runpopprop3执行:onExecute: - printenv #- write_output runpopprop3 runId=$run_number -名称:trigger_out_33步骤:-名称:TRIGGER_OUT_1类型:Bash配置:input2022世界杯阿根廷预选赛赛程Resources: - name: runpopprop3执行:onExecute: - printenv - name: TRIGGER_OUT_1_2步骤:- name: TRIGGER_OUT_2类型:Bash配置:inputResources: - name: runpopprop outputResources: - name: runpopprop outputResources: - name: runpopprop2 environmentVariables: SOME_KEY: 'asd'执行:onExecute: - printenv - name: TRIGGER_OUT_1_3步骤:- name: TRIGGER_OUT_2类型:Bash配置:inputResources: - name: runpopprop environmentVariables: SOME_KEY: 'asd'执行:onExecute: - printenv - name:TRIGGER_OUT_1_4步骤:-名称:TRIGGER_OUT_2类型:Bash配置:inputResources: -名称:runpopprop 2022世界杯阿根廷预选赛赛程outputResources: -名称:runpopprop2 environmentVariables: SOME_KEY: 'asd'执行:onExecute: - printenv -名称:TRIGGER_OUT_3_2执行:onExecute: -名称:TRIGGER_OUT_2类型:'asd'执行:- printenv -名称:TRIGGER_OUT_3_2步骤:-名称:TRIGGER_OUT_2类型:Bash配置:inputResources: -名称:runpopprop2 environmentVariables: SOME_KEY: 'asd'执行:onExecute: - printenv -名称:TRIGGER_OUT_3_2步骤:-名称:TRIGGER_OUT_2类型:Bash配置:inputResources::—名称:runpopprop2环境变量:SOME_KEY: 'asd'执行:onExecute:—printenv . print
  • 管道名为触发生成一个名为runpopprop
  • 资源runpopprop是这些管道的输入资源:
    • TRIGGER_OUT_1_1
    • TRIGGER_OUT_1_2
    • TRIGGER_OUT_1_3
    • TRIGGER_OUT_1_4
  • 触发管道使用write_output实用程序函数来触发这四个管道。
  • 资源runpopprop2连接管道TRIGGER_OUT_1_2TRIGGER_OUT_1_4到管道TRIGGER_OUT_3_2,但不会触发它。
  • 类似地,输出资源runpopprop3从管道TRIGGER_OUT_1_4不触发管道TRIGGER_OUT_1_4

示例2

这个例子展示了一个包含五个管道的管道,使用几种类型的资源相互连接。2022世界杯阿根廷预选赛赛程

在这个例子中:

  • 这些资源用于2022世界杯阿根廷预选赛赛程连接管道:GitRepoPropertyBag图像BuildInfoReleaseBundleDistributionRule

    2022世界杯阿根廷预选赛赛程资源:-名称:myGithub类型:GitRepo配置:gitProvider: myGithub路径:RjSH1/pop #branches: #include: {{gitBranch}} -名称:myBashPropertyBag类型:PropertyBag配置:key1: value1 key2: value2 -名称:myPowerShellPropertyBag类型:PropertyBag配置:key1: value1 key2: value2 -名称:myImageResource类型:映像配置:注册表:myArtifactory sourcererepository: d-docker-local imageName: icarusjuly30.jfrogdev.org/d-docker-local/myimage imageTag: mytag -名称:myImageBuildInfo类型:BuildInfo配置:sourceArtifactory: myArtifactory buildName: my_build buildNumber: 1 -名称:myImageReleaseBundle类型:ReleaseBundle配置:sourceDistribution: myDistribution名称:demo_rb版本:v1.0.0 #相同发布的签名版本bundle -名称:mySignedReleaseBundle类型:ReleaseBundle配置:sourceDistribution: myDistribution名称:demo_rb版本:v1.0.0 -名称:myDistributionRule类型:DistributionRule配置:sourceDistribution: myDistribution serviceName: "*" siteName: "*" cityName: "*" countryCodes: - "CN" - "GB"
  • 有五条相互连接的管道:

    —名称:image_build步骤:—名称:docker_build类型:DockerBuild配置:affinityGroup: docker_group dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: icarusjuly30.jfrogdev.org/d-docker-local/myimage dockerImageTag: ${run_number} input2022世界杯阿根廷预选赛赛程Resources: -名称:myGithub集成:-名称:myArtifactory -名称:docker_push类型:DockerPush配置:affinityGroup: docker_group targetRepository: d-docker-local autoPublishBuildInfo: true集成:-名称:myArtifactory inputSteps: -名称:docker_build outputResources: -名称:myImageResource -名称:myImageBuildInfo -名称:bash_ci步骤:-名称:bash_ci类型:Bash配置:inputResources: -名称:my2022世界杯阿根廷预选赛赛程Github -名称:myImageResource输出资源:-名称:myBashPropertyBag执行:onExecute: - echo "Testing the image…"- echo "$res_myImageResource_imageTag" - echo "更新输出资源…"- write_output myBashPropertyBag runId=$run_number - name: create_release配置:dependencyMode: waitOnParentSuccess: true步骤:- name: bash_step类型:Bash配置:inputResources: - name: myImageBuildInfo2022世界杯阿根廷预选赛赛程 - name: myBashPropertyBag - name: myPowerShellPropertyBag执行:onExecute: - echo "Bash step" - name: create_bundle类型:CreateReleaseBundle配置:releaseBundleName: myImageReleaseBundle releaseBundleVersion: v1.0${run_number} dryRun: false sign: true description: "My Docker image ReleaseBundle " inputSteps: - name: bash_step input2022世界杯阿根廷预选赛赛程Resources: - name: myImageBuildInfo outputResources: - name: myImageReleaseBundle - name: sign_release步骤:- name: myImageReleaseBundle outputResources: - name: myImageReleaseBundle outputResources: - name: mySignedReleaseBundle - name: distribute_bundle - name: distribute_bundle类型:DistributeReleaseBundle配置:dryRun:inputResour2022世界杯阿根廷预选赛赛程ces: - name: mySignedReleaseBundle触发器:false - name: myDistributionRule

控制管道运行

在配置管道的管道时,您可能希望指定当一个管道相对于其他由资源连接的管道运行时。2022世界杯阿根廷预选赛赛程

dependencyMode标记,该标记可以在pipelines.configuration部分中,年代指定管道何时可以相对于由资源连接的其他管道运行。2022世界杯阿根廷预选赛赛程它有三种设置:waitOnParentCompletewaitOnParentSuccess,waitOnChildComplete。如果这些设置中的任何一个是真正的,如果一个运行已经在等待相同的资源和步骤,则不会为其他管道更新的资源创2022世界杯阿根廷预选赛赛程建新的运行。因此,如果一个管道(名为Pipeline_A)连续运行两次,而下一个管道(名为Pipeline_B)连续运行两次waitOnParentComplete设置为真正的,则Pipeline_B将只运行一次。当管道运行时,它们将使用最新的资源版本。

当您希望在步骤开始执行之前确保每个管道步骤的输入资源处于稳定状态(没有运行等待或正在进行)时,可以使用这些标记,以防止在步骤2022世界杯阿根廷预选赛赛程执行过程中资源指向的工件发生更改的情况。这在管道创建将覆盖自身的工件的情况下特别有用。例如,用'latest'标签推送的Docker映像或每次上传的同名文件。在这些情况下,在触发该步骤之后,一些工件可能会发生更改,从而导致下载的内容不一致。

dependencyMode标记具有以下可选设置

设置 描述 默认的
waitOnParentComplete 如果真正的,当输出作为该管道输入的资源的管道正在等待或处理运行时,该管道将不会开始运行。该管道只有在父管道的运行完成后才会运行。
waitOnParentSuccess 如果真正的,当输出作为此管道输入的资源的管道正在进行处理运行或最后一次完整运行不成功时,管道将不会开始运行。只有在父管道运行成功后,管道才会运行。然而,如果父管道没有被触发,子管道仍然可以作为一个独立的管道被触发。
waitOnChildComplete 如果真正的,当一个管道的输入资源是该管道的输出时,该管道将不会开始运行,除非该子管道正在等待该管道完成。该管道只有在子管道运行完成后才会运行。
管道:-名称:myppipeline配置:时间顺序:true/false #默认false dependencyMode: waitOnParentComplete: true/false #默认false waitOnParentSuccess: true/false #默认false waitOnChildComplete: true/false #默认false步骤:…

虽然不推荐,如果父管道有waitOnParentCompletewaitOnParentSuccess子管道有waitOnChildComplete父管道首先运行

例子

例1 -waitOnParentCompletewaitOnParentSuccess

在本例中,是第一个管道A_parent创建Docker镜像。T子管道A_waitOnParent等待,直到父管道A_parent的运行成功完成,因为两者waitOnParentCompletewaitOnParentSuccess设为真正的A_waitOnParent

2022世界杯阿根廷预选赛赛程资源:-名称:dependencyModeImage类型:图像配置:注册表:myDocker imageName: jfrog/test imageTag: "0" -名称:dependencyModeRepo类型:GitRepo配置:gitProvider: myGithub路径:jfrog/dependencyMode分支:包括:^{{gitBranch}}$管道:-名称:A_parent步骤:-名称:createImage类型:Bash配置:inputResources: -名称:dependencyModeRepo outputResources: -名称:dependencyModeImage集成:-名称:myDocker执行:onExecute:- cd ${res_dependencyModeRepo_resourcePath} - docker build -t ${res_dependencyModeImage_imageName}:${run_number}。- docker push ${res_dependencyModeImage_imageName}:${run_number} - write_output dependencyModeImage imageTag=${run_number} - name: A_waitOnParent配置:dependencyMode: waitOnParentComplete: true waitOnParentSuccess: true步骤:- name: pullImage类型:Bash配置:inputResources: - name: dependencyModeIm2022世界杯阿根廷预选赛赛程age执行:onExecute: - echo ${res_dependencyModeImage_imageName}:${res_dependencyModeImage_imageTag}

例2 -waitOnChildComplete

在这个例子中,t父管道B_waitOnChilD等待子管道B_Child他的跑步完成了,因为waitOnChildComplete设为真正的B_waitOnChild

2022世界杯阿根廷预选赛赛程资源:- name: dependencyModePropertyBag类型:PropertyBag配置:runNumber: 0管道:- name: B_waitOnChild配置:dependencyMode: waitOnChildComplete: true步骤:- name: updateProperties类型:Bash配置:outputResources: - name: dependencyModePropertyBag执行:onExecute: - write_output dependencyModePropertyBag runNumber=${run_number} - name: B_Child步骤:- name: echoProperty类型:Bash配置:inputResources: - name:dependencyModePropertyBag执行:onExecute: - echo ${res_dependencyModePropertyBag_runNumber} - sleep 5 -名称:echoComplete类型:Bash配置:inputSteps: -名称:echoProperty执行:onExecute: - echo "complete"

查看管道中的管道

您的管道工作流的管道可以像您希望的那样复杂,具有跨团队互连的几个单独的管道。的管线图视图使查看和导航如此复杂的管道变得容易。

图视图:

  • 显示所有互联管道的组合视图
  • 提供管道和步骤的可视化
  • 显示管道、资源和管道正在使用的互连路径2022世界杯阿根廷预选赛赛程
  • 提供向下钻取到单个管道的能力
  • 提供运行的实时更新
  • 显示项目级多管道映射和运行列表

有关更多信息,请参见管线图视图

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