首页 文章

使用动态项目名称替代复制工件构建步骤 - 第2部分

提问于
浏览
2

在使用变量值选择的项目中处理工件时,我仍然遇到jenkins的问题 . 我读了这个问题:copy artifacts build step using a dynamic project name alternatives我试过了,但是,它仍然不起作用 . 也许你可以帮我找到问题 .

环境:
詹金斯诉 . 1.460
复制工件插件版本 . 1.24

用户:
luis.ribeiro - 所有权利:总体;奴隶;工作;奔跑;观察; SCM; Artifactory

詹金斯乔布斯:
build_project_2_0
build_project_1_0
deploy_project

1°测试:
描述:运行deploy_project并从build_project_2_0和build_project_1_0复制工件

Copy artifacts from another project 中配置deploy_project:
项目名称:build_project_2_0
哪种构建:最快的成功构建
仅限稳定版本:已选中
要复制的文物:** / * .war
目标目录:libs / wars
可选:未选中
展平目录:未选中

结果:
从"build_project_2_0"内部编号244复制了5个工件
使用项目名称进行测试时的结果相同:build_project_1_0

2°测试:
描述:运行deploy_project并从build_project_2_0和build_project_1_0复制工件 . 但项目名称来自参数 .

deploy_project的配置:
This build is parameterized
参数类型:选择
名称:project_name_parameter
选择:
build_project_2_0
build_project_1_0

Copy artifacts from another project
项目名称:$ project_name_parameter
哪种构建:最快的成功构建
仅限稳定版本:已选中
要复制的文物:** / * .war
目标目录:libs / wars
可选:未选中
展平目录:未选中

结果:
Copy artifacts from another project Project name 下出现此消息:值引用构建参数,因此无法验证 .

运行时:
无法找到工件副本的项目:build_project_2_0
这可能是由于项目名称或权限设置不正确;在作业配置中查看项目名称的帮助 .
构建步骤'Copy artifacts from another project'将构建标记为失败
build_project_1_0时也一样

3°测试:
描述:运行deploy_project并从build_project_2_0和build_project_1_0复制工件 . 但项目名称来自参数 .

deploy_project的配置:
This build is parameterized
参数类型:扩展选择参数
名称:project_name_parameter
参数类型:单选
值:build_project_2_0
属性键:build_project_2_0
默认值:build_project_2_0
默认属性键:build_project_2_0
报 Value :已选中

Copy artifacts from another project
项目名称:$ project_name_parameter
哪种构建:最快的成功构建
仅限稳定版本:已选中
要复制的文物:** / * .war
目标目录:libs / wars
可选:未选中
展平目录:未选中

结果:
Copy artifacts from another projectProject name 出现此消息:值引用构建参数,因此无法验证 .

运行时:
无法找到工件副本的项目:build_project_2_0这可能是由于项目名称或权限设置不正确;在作业配置中查看项目名称的帮助 . 构建步骤'Copy artifacts from another project'将构建标记为失败与build_project_1_0相同

4°测试:
描述:运行deploy_project并从build_project_2_0和build_project_1_0复制工件 . 但项目名称来自参数 .

deploy_project的配置:
This build is parameterized
参数类型:扩展选择参数
名称:project_name_parameter
参数类型:单选
值:build_project_2_0
属性键:build_project_2_0
默认值:build_project_2_0
默认属性键:build_project_2_0
报 Value :未选中

Copy artifacts from another project
项目名称:$ project_name_parameter
哪种构建:最快的成功构建
仅限稳定版本:已选中
要复制的文物:** / * .war
目标目录:libs / wars
可选:未选中
展平目录:未选中

结果:
Copy artifacts from another projectProject name 出现此消息:值引用构建参数,因此无法验证 .

运行时:
无法找到工件副本的项目:build_project_2_0这可能是由于项目名称或权限设置不正确;在作业配置中查看项目名称的帮助 . 构建步骤'Copy artifacts from another project'将构建标记为失败与build_project_1_0相同

我仍然没有让它运行,有人可以帮我解决这个问题吗?谢谢你,路易斯

3 回答

  • 2

    看起来很正确 . 我自己使用带参数的复制工件 . 我只能建议一些事情:

    • 检查项目名称(您要复制的项目名称)没有空格或其他特殊字符 . 我遇到了很多问题 .

    • 检查中的大小写项目名

    • 尝试在复制工件步骤之前回显变量,也许您会注意到差异

  • 2

    有同样的问题 . 由于错误已经说明,在我的情况下,它只是缺少权限 .

    进入你想要复制工件FROM的“源”-Job / Project,并检查它

    Permission to Copy Artifact
    

    已正确设置为要复制INTO的作业 . (或设置为*的通配符) .

  • 1

    我遇到了同样的问题并用这个shell脚本替换了copyArtefactPlugin,请注意我的param是使用ParameterizedBuildPlugin命名的“jobname”:

    jobsdir=/var/lib/jenkins/jobs
    
    function copy_artefact() {
      if [ -e "$jobsdir/$jobname/lastSuccessful/archive/" ]; then
      mkdir -p $target
    
      (
        cd $jobsdir/$jobname/lastSuccessful/archive/
        rsync -a $artefacts_pattern $target/ > /dev/null 2>&1 || true
      )
      fi
    }
    
    artefacts_pattern="*/noarch/*.rpm"
    target="$WORKSPACE/RPMS/noarch"
    copy_artefact
    
    artefacts_pattern="*/x86_64/*.rpm"
    target="$WORKSPACE/RPMS/x86_64"
    copy_artefact
    

相关问题