Jenkins 管道在作业之间共享信息

2023-12-13

我们正在尝试在 Jenkins 上定义一组将执行真正特定操作的作业。 JobA1将构建maven项目,而JobA2将构建.NET代码,JobB将其上传到Artifactory,JobC将从Artifactory下载它,JobD将部署它。 每个作业都会有一组参数,因此我们可以对任何产品(大约 100 个)重复使用相同的作业。

这背后的想法是创建黑匣子,我调用一个带有一些输入的作业,并且我总是得到一些输出,无论之间发生什么,我都不关心。另一方面,这使我们能够单独改进每项工作,增加所需的复杂性,所有产品都会立即受益。

我们希望使用 Jenkins Pipeline 来编排操作的执行。我们将为每个环境/用途建立一个管道。

  • PipelineA将调用JobA1,然后调用JobB上传到artifactory。
  • PipelineB 将下载包 JobC,然后部署到 staging。
  • PipelineC 将下载包 JobC,然后根据一些内部验证部署到生产环境。

我尝试从 JobA1 中获取一些变量(POM 基本内容,例如 ArtifactID 或 Version)注入到 JobB 但信息似乎没有被传输。 下载文件时也会发生同样的情况,我调用 JobC 但该文件位于作业工作区中,无法用于任何其他工作区,而且我担心“外部工作区管理器”插件会增加太多复杂性。

除了共享工作空间之外,还有什么方法可以实现我的目的吗?我知道共享工作区将导致无法同时运行两个管道 我是在走正确的道路还是在做一些奇怪的事情?


在作业之间共享信息有两种方法:

  1. 您可以使用stash/unstash在单个管道中的多个作业之间共享文件/数据。

    stage ('HostJob') {
        build 'HostJob'
        dir('/var/lib/jenkins/jobs/Hostjob/workspace/') {
            sh 'pwd'
            stash includes: '**/build/fiblib-test', name: 'app' 
        }
    }
    
    stage ('TargetJob') {
        dir("/var/lib/jenkins/jobs/TargetJob/workspace/") {
        unstash 'app'
        build 'Targetjob'
    }
    

    通过这种方式,您始终可以将文件/exe/数据从一个作业复制到另一个作业。管道插件中的此功能比 Artifact 更好,因为它仅在本地保存数据。该工件在构建后被删除(有助于数据管理)。

  2. 您还可以使用复制神器插件.

    复制工件需要考虑两件事:

    a) 将工件归档到宿主项目中并分配权限。

    b) 构建新作业后,选择“复制工件的权限”→ 允许复制工件的项目:*

    c) 创建构建后操作 → 归档工件 → 要归档的文件:“选择您的文件”

    d) 将所需的工件从主机复制到目标项目。 创建构建操作→从另一个项目复制工件→输入“$Project name - Host project”,该构建“例如最新成功构建”,要复制的工件“$host 项目文件夹”,目标目录“$localfolder 位置”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 管道在作业之间共享信息 的相关文章

  • 如何将参数从jenkins传递到selenium

    我正在使用詹金斯和硒 我需要将测试 url 从 jenkins 发送到 selenium 服务器 在常规选项卡下 詹金斯字符串参数 Name APP Default Value http localhost basecode 在构建后操作下
  • Hudson 和电子邮件通知

    我可以覆盖每个作业的 Hudson 设置 系统管理员电子邮件地址 吗 阅读了一些源代码http sorcerer jenkins ci org http sorcerer jenkins ci org and hudson tasks Ma
  • Jenkins 执行 PowerShell 脚本

    我正在尝试从 Jenkins 运行 PowerShell 脚本 但它似乎完全忽略了执行策略 可以通过直接执行 powershell exe 或使用PowerShell插件 https wiki jenkins ci org display
  • 解锁 Jenkins - 如何

    我已经使用 putty 从 Windows 系统在我的 ec2 实例上安装了 jenkins 当我尝试通过网络访问 jenkins 时 我使用 var lib jenkins secrets initialAdminPassword 解锁
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • 将 CCtray 与 Jenkins 结合使用,同时启用安全性(使用 HTTPS)

    我将 Jenkins 服务器配置为仅使用 HTTPS 并启用安全性 我也不喜欢任何未登录的人查看仪表板 即使它是空的 在这里 我禁用了 匿名 的 读取 访问权限 到目前为止 所有这些都完全符合我的喜好 但想要通过例如向远程客户端添加一些构建
  • 无法安装企业应用程序 - 此配置文件无法安装在此设备上

    我正在设置 Jenkins 来构建应用程序的企业版本 以便在我们的内部应用程序商店中分发 如果我将应用程序存档在 Xcode 中 然后在手机上下载内置的 ipa 则应用程序安装不会出现任何问题 但是当我使用 Jenkins 生成的具有相同私
  • 使用 Jenkins API 促进构建

    给定一个具有不同升级作业的 Jenkins 构建作业 即 将构建升级到不同的环境 如何使用 Jenkins API 触发特定构建的特定升级作业 综合不同来源的答案得出 Username Username APItoken 12345 Cre
  • 如何在 Jenkins 声明式管道中设置 PATH

    在 Jenkins 脚本化管道中 您可以像这样设置 PATH 环境变量 node git url https github com jglick simple maven project with tests git withEnv PAT
  • Jenkins + Gradle + Artifactory:无法读取生成的构建信息

    我正在尝试使用 Jenkins Pipeline 调用 Gradle 工具 将我的工件推送到 Artifactory 我正在关注 GitHub 上发布的示例 Example1 https github com JFrogDev projec
  • Jenkins 管道中的 Sonarqube 质量门状态检查失败

    我是詹金斯管道脚本和声纳库的新手 如果我能就以下问题获得一些帮助 那就太好了 当质量门检查失败时 我想使 Jenkins 声明式管道作业失败 根据声纳文档 https docs sonarqube org latest analysis s
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Jenkins 共享库 - 从 /vars 中的 /src 文件夹导入类

    我正在尝试为我的 CI 流程编写一个 Jenkins 共享库 我想引用一个类 src定义在全局函数内的文件夹 vars文件夹 因为它允许我将大部分逻辑放在类中而不是全局函数中 我遵循 Jenkins 官方文档中记录的存储库结构 Jenkin
  • 如何删除詹金斯中的旧版本? [复制]

    这个问题在这里已经有答案了 我从 Jenkins 的构建目录中删除了旧的构建文件夹 希望它们在 UI 中删除 不幸的是 虽然这些构建目录消失了 但它们的 UI 链接仍然存在 我现在有两个问题 如何删除用户界面中失效的链接 如何从 cli 中
  • 有 JUnit Attachments Jenkins 插件工作的示例吗?

    在过去一个小时左右的时间里 我一直在努力让以下工作正常进行 我将附件存储在目标目录中 但它们在班级级别或测试级别的测试页面上都没有链接 我尝试了以下每种组合 放置附件文件夹target surefire reports class 与目标
  • 在 mac-os-x Yosemite 上调用“npm”时,Jenkins 构建步骤失败

    在开始之前 我想说我已经检查过这些答案 Jenkins 构建步骤在 npm install 上失败 https stackoverflow com questions 11564508 jenkins build step fails on
  • 使用 jenkins pipeline 插件实现动态并行构建的想法

    我需要并行运行一组构建任务 构建的任务是动态的 可能会发生变化 我需要一些帮助来实现下面的细节 构建的任务详细信息将在 xml 中动态生成 其中包含哪些任务必须并行 串行执行的信息 example 说有一个版本A 其中有以下任务和执行顺序
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • 詹金斯管道如果其他不工作

    我正在创建一个示例詹金斯管道 这是代码 pipeline agent any stages stage test steps sh echo hello stage test1 steps sh echo TEST stage test3

随机推荐