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







概述

管道提供设施从管道管理Jenkins作业的执行,向作业传递信息并从作业接收输出。

对于在Jenkins中有大量遗留投资的组织来说,将许多现有的CI/CD工作流转换为pipeline可能是不实际的或不划算的。这些工具为您提供了一种在现有Jenkins工作流和pipeline之间进行互操作的方法。

例如:

  • Jenkins构建作业可以创建一个基本的Docker镜像并将其发布到Artifactory,然后从该作业中发送信息到Pipeline中的后续步骤,以构建各种Docker镜像以进行测试和发布
  • 管线可以将构建发布到Artifactory,然后将构建信息作为参数发送给Jenkins作业,以将其交付到staging
  • Jenkins构建作业可能会将Docker映像推送到Artifactory,触发pipeline来构建补充映像,然后pipeline可能会触发Jenkins来完成变体的构建

这个设施恢复使用Artifactory存储库来存储和管理所有构建和元数据。


开始之前

这个设施要求Jenkins Artifactory插件与Jenkins一起安装。

页面内容

从管道运行Jenkins作业

管道中的管道可以将控制传递给Jenkins作业,然后在Jenkins作业完成后返回执行。

总而言之,这是事件的顺序:

  1. 在pipeline中,管道执行詹金斯一步来调用Jenkins作业Jenkins服务器集成
  2. 当Jenkins作业完成时,它将控制权返回给管道,并通过调用管道中的函数来更新管道资源2022世界杯阿根廷预选赛赛程Jenkins Artifactory插件
  3. 在Pipelines中,管道恢复执行任何更新的资源2022世界杯阿根廷预选赛赛程

Jenkins服务器集成

要使管线能够将控制权从Jenkins传递并返回给Jenkins,管理员用户必须首先添加Jenkins服务器集成Jenkins服务器集成指定Jenkins URL,以及有效Jenkins用户的用户名/令牌凭证。此外,Jenkins服务器集成必须生成一个承载令牌通过Jenkins Artifactory插件验证从Jenkins发送到pipeline的消息。

Jenkins Artifactory插件必须配置Callback URL,并且生成的承载令牌必须添加到插件的凭据中。看到Jenkins服务器集成获取详细信息。

管道DSL

如果Jenkins作业将更新管道资源,你必须在管道DSL中声明这些资源。2022世界杯阿根廷预选赛赛程例如,aPropertyBag资源可以用来通知Jenkins作业结果:

2022世界杯阿根廷预选赛赛程
2022世界杯阿根廷预选赛赛程—name: app_test_results type: PropertyBag配置:passed: 0 failing: 0


要在管道中启动Jenkins作业的执行,请使用詹金斯本机的一步。中指定Jenkins Server集成集成块。如果Jenkins作业更新了pipeline资源,则必须在2022世界杯阿根廷预选赛赛程output2022世界杯阿根廷预选赛赛程Resources块。

詹金斯一步
—name: test_app type: Jenkins configuration: jenkinsJobName: basic-api inputR2022世界杯阿根廷预选赛赛程esources:—name: app_docker buildParameters: imageName: ${res_app_docker_imageName} imageTag: ${res_app_docker_imageTag} integrations:—name: myJenkins outputResources:—name: app_test_results . name: app_test_results . name

当加载到管道中时,管道图显示了Jenkins步骤,其中Docker映像作为输入资源,而由Jenkins作业更新的PropertyBag作为输出资源。


向Jenkins发送构建参数

方法将参数传递给Jenkins作业buildParameters财产。这些值可以是固定的,也可以使用管道环境变量发送动态值。

在本例中,我们指定一个图片资源命名为"app_docker"input2022世界杯阿根廷预选赛赛程Resources我们的詹金斯步骤。我们的buildParameters属性引用资源的环境变量。

詹金斯参数
buildParameters: imageName: ${res_app_docker_imageName} imageTag: ${res_app_docker_imageTag} environment: "test"

运行状态环境变量是不可用的buildParameters。

Jenkins Build Job

詹金斯的工作必须准备好识别传入buildParameters从管道。当我们的Jenkins作业执行时,我们的示例构建参数从管道接收并可供使用。

詹金斯的工作
步骤{echo "环境:${params。在${params. imagename}上运行测试:${params. imagename}。imageTag} "}

在Jenkins构建作业结束时,调用插件的函数jfPipelines ()发出完成的信号,并将控制返回给管道。

詹金斯的工作
jfPipelines ()

您的构建作业可以通过更新pipeline资源的属性将信息传递回pipeline。2022世界杯阿根廷预选赛赛程为此,请使用调用中的新属性值按名称声明每个资源jfPipelines ()

例如,下面的调用引用了一个pipelinePropertyBag我们称之为资源app_test_results并为它的两个属性提供了新的值:

詹金斯的工作
jfPipelines(outputR2022世界杯阿根廷预选赛赛程esources: """[{"name": "app_test_results", "content": {"passing": 1234, "failing": 0}}]""" ")

如上所述,这些pipeline资源必须声明为2022世界杯阿根廷预选赛赛程output2022世界杯阿根廷预选赛赛程Resources调用Jenkins步骤。


从Jenkins作业触发管道(已弃用)

本节中描述的方法在1.6.0版本中已弃用。它只适用于以前版本的pipeline。

管线中的管道可以通过Jenkins发布到Artifactory的构建,从Jenkins构建作业触发。

总而言之,这就是Jenkins触发管道的方式:

  1. Jenkins作业成功完成构建并将其发布到Artifactory。
  2. Jenkins作业消息管道通过一个REST API创建一个新版本的BuildInfo资源。
  3. 在管道中,BuildInfo资源的变化触发管道的执行。

这个序列的功能要求BuildInfo资源也必须指定一个Jenkins集成。

詹金斯集成

要使Jenkins能够触发pipeline,管理员用户必须首先添加一个詹金斯集成詹金斯集成指定Jenkins URL,以及JFrog平台中有效用户的用户名/密码凭证。这些用户凭证将用于验证从Jenkins发送到pipeline的消息。


Jenkins Build Job

一旦Jenkins集成被添加到管道中,集成的UI视图提供回调URL和curl命令行。这些为您提供了Jenkins将需要的命令的使用格式,以便向pipeline发送消息。所有用户都可以查看,而不仅仅是管理员。

在Jenkins构建作业中,在构建完成时使用基本授权将curl命令添加到POST中。您需要添加- d选项来指定受影响的BuildInfo。

詹金斯
post {success {script {sh "curl -XPOST -H "Authorization: Basic am9obi1kb2U6cGFzc3dvcmQ=\" \"http://pipelines.mycompany.info:8082/pipelines/api/v1/projectIntegrations/627/hook\" -d '{\"buildName\":\"$JOB_NAME\",\"buildNumber\":\"$BUILD_NUMBER\",\"buildInfoResourceName\":\"jenkinsBuildInfo\"}' -H \"Content-Type: application/json\""}}}

buildInfoResourceName参数必须指定对象的友好名称BuildInfo管道DSL中的资源,表示jenkins创建的构建。在上面的例子中,它命名jenkinsBuildInfo在下一节的示例管道中声明的资源。

管道DSL

Jenkins引用的BuildInfo资源必须在pipeline DSL中声明。它还必须通过在资源中指定它来连接到Jenkins集成externalCI财产。

pipelines.2022世界杯阿根廷预选赛赛程resources.yml
2022世界杯阿根廷预选赛赛程资源:-名称:jenkinsBuildInfo类型:BuildInfo配置:sourceArtifactory: myArtifactory #替换为您的Artifactory集成名称buildName: sample-build #替换为您的构建名称buildNumber: 1 externalCI: MyJenkins #替换为您的Jenkins集成名称


当在步骤中指定BuildInfo资源时input2022世界杯阿根廷预选赛赛程Resources,则Jenkins构建作业对该构建信息的更新将触发该步骤。

pipelines.steps.yml
管道:-名称:pipelines_trigger步骤:-名称:start_from_jenkins类型:Bash配置:inputResources: -名称:jenkinsBuildInfo执行:onEx2022世界杯阿根廷预选赛赛程ecute: - echo 'Jenkins job triggered pipelines '


当Jenkins以这种方式触发管道运行时,BuildInfo资源将填充有关Jenkins代理的附加信息。中查看这些属性运行历史





从管道触发Jenkins作业(已弃用)

本节中描述的方法在1.6.0版本中已弃用。它只适用于以前版本的pipeline。

管道中的管道可以通过一个传出的webhook触发Jenkins构建作业的执行。

总而言之,这就是管线触发Jenkins的方式:

  1. 管线发送一个传出的webhook消息给Jenkins。
  2. Jenkins收到webhook并开始执行。

这个序列的功能要求Jenkins作业被配置为接收和操作一个webhook。

准备詹金斯

在您希望管线触发的Jenkins作业中,添加通用Webhook插件你应该配置webhook插件

  • 一个令牌,它将限制仅对引用该令牌的请求触发
  • 如果需要,您打算从pipeline发送的任何其他参数

准备管道

管理员用户必须创建外发Webhook集成它指定了Jenkins URL和用户凭据。

你应该指定URL地址在你的Jenkins安装的Generic Webhook插件,具有基本的授权。您必须提供有效的Jenkins用户名和密码。

管道DSL

一个OutgoingWebhook资源必须在管道DSL中声明,并指定Outgoing Webhook集成。它还必须声明令牌参数,Jenkins插件所期望的。

pipelines.2022世界杯阿根廷预选赛赛程resources.yml
2022世界杯阿根廷预选赛赛程资源:-名称:myJenkinsTrigger类型:OutgoingWebhook配置:webhookName: MyJenkinsWebhook #替换为您的OutgoingWebhook集成名称参数:token=PIPELINES1 #替换为您的token值


在步骤中指定OutgoingWebHook资源时output2022世界杯阿根廷预选赛赛程Resources属性时,该步骤将把webhook发送给Jenkins。这将触发Jenkins作业的执行。

pipelines.steps.yml
管道:-名称:jenkins_trigger步骤:-名称:step_to_jenkins类型:Bash配置:outputResources: -名称:myJenkinsTrigger #触发Jen2022世界杯阿根廷预选赛赛程kins执行的传出webhook: onExecute: - echo '触发Jenkins job'
  • 没有标签
版权所有©2023 JFrog Ltd.