我正在为我的管道使用声明性语法,并且希望将路径存储到我的一个阶段上使用的工作空间,以便可以在稍后阶段使用相同的路径。
我已经看到我可以调用pwd()
来获取当前目录,但是如何分配在阶段之间使用的变量?
修改
我试图通过自己的自定义变量定义并使用类似的ws指令来实现:
pipeline {
agent { label 'master' }
stages {
stage('Build') {
steps {
script {
def workspace = pwd()
}
sh '''
npm install
bower install
gulp set-staging-node-env
gulp prepare-staging-files
gulp webpack
'''
stash includes: 'dist/**/*', name: 'builtSources'
stash includes: 'config/**/*', name: 'appConfig'
node('Protractor') {
dir('/opt/foo/deploy/') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
}
stage('Unit Tests') {
steps {
parallel (
"Jasmine": {
node('master') {
ws("${workspace}"){
sh 'gulp karma-tests-ci'
}
}
},
"Mocha": {
node('master') {
ws("${workspace}"){
sh 'gulp mocha-tests'
}
}
}
)
}
post {
success {
sh 'gulp combine-coverage-reports'
sh 'gulp clean-lcov'
publishHTML(target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: false,
reportDir: 'test/coverage',
reportFiles: 'index.html',
reportName: 'Test Coverage Report'
])
}
}
}
}
}
在Jenkins构建控制台中,我发现这种情况发生了:
[Jasmine] Running on master in /var/lib/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ@2
[Pipeline] [Jasmine] {
[Pipeline] [Jasmine] ws
[Jasmine] Running in /var/lib/jenkins/workspace/_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ@2@2
从第一阶段分配的原始工作空间实际上是_Pipelines_IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ
所以看起来它不起作用,我在这里做错了什么?
由于
答案 0 :(得分:2)
pipeline {
agent none
stages {
stage('Stage-One') {
steps {
echo 'StageOne.....'
script{ name = 'StackOverFlow'}
}
}
stage('Stage-Two'){
steps{
echo 'StageTwo.....'
echo "${name}"
}
}
}
}
以上为StackOverFlow
StageTwo
中的echo "${name}
打印sh "echo ${env.WORKSPACE}"
您还可以使用NSManagedObjectID
获取分配给构建的目录的绝对路径作为工作区。
答案 1 :(得分:0)
您可以将值放入environment variable
中描述的this answerCURRENT_PATH= sh (
script: 'pwd',
returnStdout: true
).trim()
您正在运行哪个版本? Maybe您可以将WORKSPACE
变量分配给环境var?
或者我完全误解了this is你在寻找什么?