Jenkins 将当前工作区路径存储在变量中以备以后使用
我正在为我的管道使用声明性语法,并希望存储在我的一个阶段上使用的工作区的路径,以便在以后的阶段中可以使用相同的路径 我已经看到我可以调用Jenkins 将当前工作区路径存储在变量中以备以后使用,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在为我的管道使用声明性语法,并希望存储在我的一个阶段上使用的工作区的路径,以便在以后的阶段中可以使用相同的路径 我已经看到我可以调用pwd()来获取当前目录,但是我如何分配给要在阶段之间使用的变量呢 编辑 我尝试通过定义自己的自定义变量并在ws指令中使用like so来实现这一点: pipeline { agent { label 'master' } stages { stage('Build') { steps { script {
pwd()
来获取当前目录,但是我如何分配给要在阶段之间使用的变量呢
编辑
我尝试通过定义自己的自定义变量并在ws指令中使用like so来实现这一点:
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
从第一阶段分配的原始工作区实际上是\u Pipelines\u IACT-Jenkinsfile-UL3RGRZZQD3LOPY2FUEKN5XCY4ZZ6AGJVM24PLTO3OPL54KTJCEQ
所以它看起来不起作用,我做错了什么
谢谢您可以将该值放入中所述的 您正在运行哪个版本?您可以将
工作空间变量分配给环境变量
还是我完全误解了你在寻找什么
pipeline {
agent none
stages {
stage('Stage-One') {
steps {
echo 'StageOne.....'
script{ name = 'StackOverFlow'}
}
}
stage('Stage-Two'){
steps{
echo 'StageTwo.....'
echo "${name}"
}
}
}
}
上面为echo“${name}
”
您还可以使用sh“echo${env.WORKSPACE}”
获取作为工作区分配给构建的目录的绝对路径。我认为分配给变量是从我在其他地方读到的正确方法,但是我无法让它工作。请参阅我对原始问题的编辑谢谢,我实际上使用了不同的方法,请参阅我的更新问题。但是它似乎仍然不起作用,有什么想法吗?
pipeline {
agent none
stages {
stage('Stage-One') {
steps {
echo 'StageOne.....'
script{ name = 'StackOverFlow'}
}
}
stage('Stage-Two'){
steps{
echo 'StageTwo.....'
echo "${name}"
}
}
}
}