Jenkins Copy Artifact 无法找到文件夹/multiProjectPipeline/branchWithSlash

2023-12-22

我在 Windows Server 2016 上有 Jenkins LTS 2.60.2 并使用这些插件:

  • 文件夹插件 (6.1.0)
  • 复制神器 https://wiki.jenkins.io/display/JENKINS/Copy+Artifact+Plugin插件 (1.38.1)
  • 管道插件(2.5)+所有依赖的管道子插件
  • 各种其他依赖插件...

See 使用来自同一个 git 分支名称关联的 2 个项目的工件的管道 https://stackoverflow.com/questions/45282440/pipeline-to-use-artifacts-from-2-projects-associated-by-the-same-git-branch-name有关我的设置的更多详细信息,但总而言之,我有以下项目:

  • Playground(使用文件夹插件创建的文件夹,用于对以下所有项目进行分组)
  • 前端(多分支管道)
  • 后端(多分支管道)
  • 配置(带有名为 BRANCH_NAME 的参数的管道)

前端和后端git 仓库,两者都有一个名为master和一个叫发布/2017.2.

这个想法是调用配置每次成功构建后都会自动管道,传递 git 分支名称。自动触发配置管道工程。

不起作用,我需要你的帮助来修复,是里面的步骤配置用于从多分支管道/特定分支复制工件的管道。

如果对于 BRANCH_NAME 参数(或上游管道)是master有用。如果 BRANCH_NAME 是:发布/2017.2我收到此错误:

错误:无法找到工件副本的项目: Playground/frontend/release%2f2017.2 这可能是由于项目不正确造成的 名称或权限设置;请参阅作业中项目名称的帮助 配置。完成:失败

The 配置管道看起来像这样:

node {
  stage('Prepare') {
      def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2f")
      step([$class: 'CopyArtifact', projectName: "${projectname}", selector: [$class: 'StatusBuildSelector', stable: false]])
  }
  stage('Archive') {
      archiveArtifacts '**'
  }
}

正如你所看到的,我已经将 / 替换为 %2f (这是必需的)。

如果我不使用“playground”文件夹(我的所有管道按原样,不在文件夹项内),它就可以工作。如果我使用该文件夹并使用主分支,它就可以工作。如果我使用文件夹和分支名称(例如 2017.2),它不起作用。我究竟做错了什么?你能帮忙让它发挥作用吗?如果这是一个错误的话(我在https://issues.jenkins-ci.org https://issues.jenkins-ci.org并发现一些错误,其中类似的文件夹设置不起作用,但它们已被修复...所以我真的想知道...)在复制工件插件中,请提交错误并在此处共享链接,以便我们可以所有人都在监视其进展...

谢谢。


我终于找到问题了。这配置由于编码不正确,管道无法找到带有斜杠的分支。

所以,在我的问题中,配置管道:

这个(替换/ with %2f) 是错误的并生成error:

def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2f")

这是对斜杠进行编码的正确方法,并且它works:

def projectname = "playground/frontend/" +  URLEncoder.encode("${BRANCH_NAME}", "UTF-8").replace("+", "%20")

致谢:http://www.pipegrep.se/copy-artifacts-from-jenkins-pipeline-jobs.html http://www.pipegrep.se/copy-artifacts-from-jenkins-pipeline-jobs.html

UPDATE:实际上,我进一步调查并添加了echo "${projectname}"就在之前step,使用以前的固定项目名称,我注意到区别是%2f 小写.

大写, 像这样:%2F works:

def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2F")

所以,固定的配置管道看起来像这样(我保留了替换功能,这对于我的情况来说已经足够了):

node {
  stage('Prepare') {
      def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2F")
      step([$class: 'CopyArtifact', projectName: "${projectname}", selector: [$class: 'StatusBuildSelector', stable: false]])
  }
  stage('Archive') {
      archiveArtifacts '**'
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins Copy Artifact 无法找到文件夹/multiProjectPipeline/branchWithSlash 的相关文章

随机推荐

  • 在 GAE 项目中的灵活环境模块之间共享代码

    我正在将我的 GAE flex 项目构建为多种服务 my project services service 1 service 1 yaml service 2 service 2 yaml 我现在想在服务之间共享一些代码 理想情况下 我希
  • 如何等待一系列任务并停止等待第一个异常?

    我有一系列任务 我正在等待它们Task WhenAll https learn microsoft com en us dotnet api system threading tasks task whenall 我的任务经常失败 在这种情
  • 在 Ubuntu 中自动安装基于包的 Perl 模块

    我想安装特定 Perl 脚本所需的 Perl 模块 例如perl depends工具 不过 我想在 Ubuntu 中使用apt get 意味着通过包存储库而不是通过 CPAN 安装模块 最相似的问题 例如this one https sta
  • Rails 中的全文 mysql 搜索

    我正在尝试将一个简单的 mysql 全文搜索添加到一个 请不要告诉我安装 solr 或任何其他搜索宝石 我尝试运行它们 这似乎是一个又一个问题 有一天我会抽出时间来做这件事 但那一天不是今天 我需要添加 add index 迁移 但是当我运
  • Visual Studio 2008 Express 无法识别我的 Sql Server 2008 Express

    我最近安装的顺序是 SQL Server 2008 Express 可视化 Web 开发人员速成 2008 当我右键单击 app data 并尝试添加数据库时 它返回 与 SQL Server 文件 mdf 的连接需要 SQL Server
  • 有没有办法在原生 CommonJS 环境中使用 JSX?

    我正在一个具有本机的环境中启动一个新项目CommonJS支持require模块 这是一个atom shell项目 不可能使用预编译步骤 例如在Browserify或webpack AFAIK中 我可以在我的设备上使用 JSXapp jsx在
  • JSON-WSP 或 JSON-RPC [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Eclipse 与大型工作区结合使用

    我们当前的产品基于 Eclipse RCP 当我们尝试将整个代码库放在一个 Eclipse 工作区中并且我们想知道其他人在做什么时 我们开始遇到问题 这是我们的设置 225 个 eclipse 项目 全部在 trunk project 中
  • 没有 Springboard 的 iOS:由于没有系统事件服务器而终止

    我正在尝试使用 IB 与 Springboard 创建一个简单的 Hello World 应用程序 添加一个按钮及其与操作例程的连接后 我得到以下信息 由于没有系统事件服务器而终止 运行事件泵 或者如果您想运行 请传递参数 Register
  • SSE 浮点运算可以重现吗?

    x87 FPU 因使用内部 80 位精度模式而闻名 这通常会导致跨编译器和机器出现意外且不可重现的结果 在我的搜索中 https stackoverflow com questions 14864238 coercing floating
  • Java - 正则表达式替换美元符号之间的文本

    我正在使用 JAVA 并且想要替换美元符号之间的每个文本实例 例如 1st equation frac 1 mu 1 frac 2 pi lambda x 2nd equation 90 0 3rd equation frac mu t 2
  • 将系统设置为始终使用圆角字体?

    在 SwiftUI 中 有没有办法让系统字体的圆角版本成为所有样式的默认字体 我对应用程序中的所有文本使用一种系统样式 body title headline 等 例如 我可以在单个文本视图上使用它 Text some text font
  • 是什么导致 IE 8 在网站加载时暂停?

    大家好 我想看看你们中是否有人在 Internet Explorer 8 上经历过同样的事情 当我去加载我构建的网站时 我可以看到整个页面已加载 但它之前暂停了大约 8 秒您可以滚动或移动 一旦暂停完成 就可以滚动 但如果您单击不同的页面
  • 从 Swift REPL 中,如何获取可用模块的列表?

    从 Swift REPL 我可以通过以下方式导入 Foundation 等框架模块import Foundation 我可以在 REPL 上发出什么命令来生成可导入的所有模块的列表 附录 只是为了真正清楚我想要理解的内容 在 REPL 上
  • 在升级安装期间删除旧文件版本

    我正在 InstallShield Pro 2010 中使用纯 InstallScript 安装 我们的软件中的第三方 jar 文件已被替换为新版本 运行升级安装时 会安装新的 jar 但旧的 jar 也会保留 糟糕的事情接踵而至 如何让
  • 使用 Eclipse CDT/RSE/RDT 远程调试 C++ 应用程序

    我正在与 Eclipse 在 Windows 中 进行斗争 使其连接到我的 Linux 机器并在那里远程编译和调试 C 代码 我正在做的工作 安装 CDT RSE RDT Eclipse Juno CDT 8 1 2 PTP RDT 6 0
  • 创建 Spring 枚举 bean 并传递方法调用的值

    我有这个单例 public enum Elvis INSTANCE private int age public int getAge return age 我知道如何在 Spring 中创建枚举 bean
  • NextRouter 未安装 Next.JS

    Using import useRouter from next router as import useRouter from next navigation 抛出 pathname string query search string
  • 为什么我无法捕获 EJB 异常?

    我似乎无法在我的 java ee 6 项目中捕获 NoResultException 或 EJBException 等异常 我做错了什么吗 我在 EJB 容器之外捕获了异常 但这是我第一次使用 EJB 谢谢 Stateless public
  • Jenkins Copy Artifact 无法找到文件夹/multiProjectPipeline/branchWithSlash

    我在 Windows Server 2016 上有 Jenkins LTS 2 60 2 并使用这些插件 文件夹插件 6 1 0 复制神器 https wiki jenkins io display JENKINS Copy Artifac