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





概述

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

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

例如:

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

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


开始之前

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

页面内容

从管道运行Jenkins工作

管道中的管道可以将控制转移到Jenkins作业,然后在Jenkins作业完成后返回执行。

总之,事件的顺序如下:

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

Jenkins服务器集成

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

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

管道DSL

如果Jenkins作业将更新管线资源,则必须在管线DSL中声明这些资源。2022世界杯阿根廷预选赛赛程例如,PropertyBag资源可以用来表明Jenkins的工作结果:

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


要从管道中启动Jenkins作业的执行,请使用詹金斯本机的一步。您必须指定Jenkins服务器集成集成块。如果Jenkins作业更新管线资源,则必须在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

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


向Jenkins发送构建参数

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

在这个例子中,我们指定了一个图片资源的“app_docker”input2022世界杯阿根廷预选赛赛程Resources我们的詹金斯台阶。我们的buildParameters属性引用资源的环境变量。

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

运行状态环境变量不能提供给buildParameters。

詹金斯建造工作

詹金斯的工作必须做好迎接新到来的准备buildParameters从管道。当我们的Jenkins作业执行时,我们的示例构建参数会从pipeline接收到,并可供使用。

詹金斯的工作
步骤{echo "environment: ${params。${params. imagename}:${params. imagename}:${params. imagename}" echo "对映像运行测试。imageTag} "}

在Jenkins构建任务结束时,调用插件的函数jfPipelines ()发出完成信号,并将控制权交还给管线。

詹金斯的工作
jfPipelines ()

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

例如,下面的调用引用管道PropertyBag我们所调用的资源app_test_results并为其两个属性提供新值:

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

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


从Jenkins job触发管道(已弃用)

本节中描述的方法在1.6.0版中已弃用。它仅可用于先前版本的管线。

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

总之,Jenkins是如何触发管道的:

  1. Jenkins作业成功完成构建并将其发布到Artifactory。
  2. 的新版本,Jenkins作业通过REST API向pipeline发送消息BuildInfo资源。
  3. 在管道中,BuildInfo资源的更改会触发管道的执行。

此序列的功能要求BuildInfo资源还必须指定Jenkins集成。

詹金斯集成

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


詹金斯建造工作

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

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

詹金斯
post {success {script {sh "curl -XPOST -H \"授权: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表示jenkins创建的构建的管道DSL中的资源。在上面的例子中,它命名为jenkinsBuildInfo在下一节的示例管道中声明的资源。

管道DSL

Jenkins引用的BuildInfo资源必须在管线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执行:onExe2022世界杯阿根廷预选赛赛程cute: - echo 'Jenkins作业触发管线'


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





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

本节中描述的方法在1.6.0版中已弃用。它仅可用于先前版本的管线。

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

总之,这就是管道如何触发Jenkins:

  1. 管道公司向詹金斯发送了一条网络链接信息。
  2. 詹金斯收到网络钩子并开始执行。

此序列的功能要求Jenkins作业被配置为接收webhook并对其进行操作。

准备詹金斯

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

  • 一种令牌,将触发限制为仅引用该令牌的请求
  • 如果需要,您打算从管线发送的任何附加参数

准备管道

管理员用户必须创建外向Webhook集成指定Jenkins URL和用户凭证。

你应该在Jenkins安装中指定URL来处理Generic Webhook Plugin,并进行基本授权。您必须提供有效的Jenkins用户名和密码。

管道DSL

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

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


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

pipelines.steps.yml
pipeline: - name: jenkins_trigger steps: - name: step_to_jenkins type: Bash配置:outputResources: - n2022世界杯阿根廷预选赛赛程ame: myJenkinsTrigger # outgoing webhook触发Jenkins执行:onExecute: - echo 'Triggered Jenkins job'
  • 没有标签
版权所有©2022 JFrog Ltd.