【发布时间】:2017-10-30 15:09:58
【问题描述】:
尝试使用声明式管道在 Jenkins 中创建工作流来执行以下操作:
- 签出“master”上的代码
- 在“master”上构建解决方案(我知道这不是一种安全的方法,但 Jenkins 在 Intranet 中,所以对我们来说应该没问题)
- 存储工件(.dll、.exe、.pdb 等)=> 第一阶段
- 根据需要在节点上取消存储工件(从属设备上的单元测试、另一个上的集成测试和另一个上的 Selenium 测试)=> 第二阶段
- 根据从站运行测试 => 并行运行的第三阶段
我面临的问题是每个阶段都会执行 git checkout (GitSCM)。
我的管道如下所示:
pipeline {
agent {
label {
label "master"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
options {
timestamps()
}
stages {
stage("Build") {
agent {
label {
label "master"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
/*
steps to build the solution here
*/
//Sleep because stashing fails otherwise
script {
sleep(1)
}
dir("${env.WORKSPACE}\\UnitTests\\bin\\Release") {
stash name: 'unit-tests'
}
dir("${env.WORKSPACE}\\WebUnitTests\\bin\\x64\\Release") {
stash name: 'web-unit-tests'
}
}
stage('Export artefacts') {
agent {
label {
label "UnitTest"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
echo "Copying dlls from master to ${env.NODE_NAME}"
dir("${env.WORKSPACE}\\UnitTests\\bin\\Release") {
unstash 'unit-tests'
}
}
}
stage('Run tests') {
parallel {
stage("Run tests #1") {
agent {
label {
label "UnitTest"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
/*
run tests here
*/
}
post {
//post results here
}
}
//other parallel stages
}
}
}
}
【问题讨论】: