我是Jenkin的新手,我在Bitbucket有4个回购说A,B,C,D。 我必须拿A,B& C repos,使用 gradle build 构建它们,这将产生战争。 现在我必须在D \ warsFolder中复制这些战争 我创建了Multibranch管道并生成了管道语法,该语法提取A,B和B管道。来自git的C并构建它们。看起来像这样的事情
node {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'A']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'id', url: 'http://.../A.git']]])
dir('A') {
bat 'gradle build -i --info --stacktrace --debug'
}
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'B']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'id', url: 'http://.../B.git']]])
dir('B') {
bat 'gradle build -i --info --stacktrace --debug'
}
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'C']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'id', url: 'http://.../C.git']]])
dir('C') {
bat 'gradle build -i --info --stacktrace --debug'
}
}
在Jenkinsfile中添加了上面的脚本,我把它放在了A repo。
中现在我创建了一个Multibranch管道 Fetch_all 并在分支源中创建了>单一存储库&分支 - >存储库URL我添加了http://.../A.git(有Jenkinsfile)。 到目前为止一切正常,我能够获取源并构建它们。
我在源代码管理中创建了Freestyle的新职位 - > Git - >存储库URL将为http://.../D.git。 我正在尝试复制 Fetch_all 管道中生成的战争但在Build - >中从项目名称不接受Multibranch管道的另一个项目复制工件。它像
一样抛出错误ERROR: Unable to find project for artifact copy:
This may be due to incorrect project name or permission settings; see help for project name in job configuration.
感谢任何帮助。
答案 0 :(得分:2)
最后得到它,当我给pipe_name / branchname,即Fetch_all /%00时,它工作正常。
答案 1 :(得分:0)
花了一些时间来找出正确的语法。 Coyartifact Plugin的文档有些混乱,因为它提到了encoding of special characters。实际上,不必对空格进行编码,而必须对斜杠进行编码。
复制工件的Jenkins文件位于“其他文件夹/多分支管道测试/”中,并在此内容中复制“文件夹/多分支管道/功能%2Fallow-artifact”的最后一次成功构建的工件。复制项目
copyArtifacts(
projectName: 'Folder/Multi branch Pipeline/feature%2Fallow-artifact-copy',// the name of project, as you find it from the root of jenkins
selector: lastSuccessful(), // selector to select the build to copy from. If not specified, latest stable build is used.
filter: 'projects/Output/myzip.zip', // ant-expression to filter artifacts to copy, Attention! Filter is case sensitive
target: 'sources/deploy/', // target directory to copy to, intermediate folders will be created
flatten: true, // ignore directory structures of artifacts, Artifact will be placed at 'sources/deploy/myzip.zip'. Is the option false, you find it at 'projects/Outpu/myzip.py'
optional: false, // do not fail the step even if no appropriate build is found.
fingerprintArtifacts: true, // fingerprint artifacts to track builds using those artifacts
)
并且不要忘记允许在要从中获取工件的项目中复制工件。将此添加到“文件夹/多分支管道/功能%2Fallow-artifact-copy”的Jenkins文件中。使用绝对路径,以免在移动某些项目时出现问题。
options {
disableConcurrentBuilds()
timeout(time: 30, unit: 'MINUTES')
copyArtifactPermission('/Other-folder/Multi branch Pipeline Test/*, /second Folder/*') // allow all the projects or branches of 'Other-folder/Multi branch Pipeline Test' and 'second Folder' to copy artifacts of this job
} // end of options