我正在尝试从 Jenkins 管道(工作流程)中找到使用 Jenkins Copy Artifacts Plugin 的示例。
任何人都可以指出使用它的示例 Groovy 代码吗?
我正在尝试从 Jenkins 管道(工作流程)中找到使用 Jenkins Copy Artifacts Plugin 的示例。
任何人都可以指出使用它的示例 Groovy 代码吗?
使用声明性 Jenkinsfile,您可以使用以下管道:
pipeline {
agent any
stages {
stage ('push artifact') {
steps {
sh 'mkdir archive'
sh 'echo test > archive/test.txt'
zip zipFile: 'test.zip', archive: false, dir: 'archive'
archiveArtifacts artifacts: 'test.zip', fingerprint: true
}
}
stage('pull artifact') {
steps {
copyArtifacts filter: 'test.zip', fingerprintArtifacts: true, projectName: '${JOB_NAME}', selector: specific('${BUILD_NUMBER}')
unzip zipFile: 'test.zip', dir: './archive_new'
sh 'cat archive_new/test.txt'
}
}
}
}
在 CopyArtifact 1.39 版之前,您必须将第二阶段替换为以下内容(感谢@Yeroc):
stage('pull artifact') {
steps {
step([ $class: 'CopyArtifact',
filter: 'test.zip',
fingerprintArtifacts: true,
projectName: '${JOB_NAME}',
selector: [$class: 'SpecificBuildSelector', buildNumber: '${BUILD_NUMBER}']
])
unzip zipFile: 'test.zip', dir: './archive_new'
sh 'cat archive_new/test.txt'
}
}
使用CopyArtifact
'${JOB_NAME}' 作为当前正在运行的项目的项目名称。
使用最后一个成功的项目构建号使用的默认选择器CopyArtifact
,而不是当前的选择器(因为它尚未成功,或者没有)。SpecificBuildSelector
您可以选择包含当前正在运行的项目内部版本号的“${BUILD_NUMBER}” 。
该管道适用于并行阶段并且可以管理大文件(我使用的是 300Mb 文件,它不适用于 stash/unstash)
如果您拥有所有需要的插件,此管道可与我的 Jenkins 2.74 完美配合
如果您在您的主服务器中使用从服务器,并且您想在彼此之间复制工件,您可以使用 stash/unstash,例如:
stage 'build'
node{
git 'https://github.com/cloudbees/todo-api.git'
stash includes: 'pom.xml', name: 'pom'
}
stage name: 'test', concurrency: 3
node {
unstash 'pom'
sh 'cat pom.xml'
}
您可以在此链接中看到此示例:
https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow
如果构建不在同一管道中运行,您可以使用直接CopyArtifact
插件,这里是示例:https ://www.cloudbees.com/blog/copying-artifacts-between-builds-jenkins-workflow和示例代码:
node {
// setup env..
// copy the deployment unit from another Job...
step ([$class: 'CopyArtifact',
projectName: 'webapp_build',
filter: 'target/orders.war']);
// deploy 'target/orders.war' to an app host
}
name = "/" + "${env.JOB_NAME}"
def archiveName = 'relNum'
try {
step($class: 'hudson.plugins.copyartifact.CopyArtifact', projectName: name, filter: archiveName)
} catch (none) {
echo 'No artifact to copy from ' + name + ' with name relNum'
writeFile file: archiveName, text: '3'
}
def content = readFile(archiveName).trim()
echo 'value archived: ' + content
尝试使用复制工件插件