我正在尝试为依赖于nodeJS模块的Web应用程序项目获取管道设置,因此需要将这些安装作为构建阶段的一部分
我遇到的问题是,在运行我的第二个“单元测试”阶段时,shell命令用于运行Gulp任务,gulp在第一阶段作为节点模块安装。但是,当切换回我的主节点时,在前一阶段(卸载文件时)处于不同节点上时,会创建一个新工作区(命名与第一阶段中的原始工作区相同,但后缀为'@ 2'),因此节点模块不可用。我不想再次安装这些,所以我想从第一阶段重新使用相同的工作区目录。
我尝试了什么:
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') {
echo "${workspace}"
ws("${workspace}"){
sh 'gulp karma-tests-ci'
}
}
},
"Mocha": {
node('master') {
ws("${workspace}"){
sh 'gulp mocha-tests'
}
}
}
)
}
}
}
}
这种方法对我来说不起作用,因为当在第二阶段的并行步骤中切换回我的主节点时,它不使用第一阶段的工作空间。同样,在回显我的工作空间路径变量时,我可以看到它更改为@ 2前缀复制。
pipeline {
agent { label 'master' }
stages {
stage('Build') {
steps {
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'
stash excludes: 'dist/**/*', name: 'originalSources'
node('Protractor') {
dir('/opt/interact/deploy/') {
unstash 'builtSources'
unstash 'appConfig'
}
}
}
}
stage('Unit Tests') {
steps {
node('master') {
unstash 'originalSources'
sh 'gulp karma-tests-ci'
}
}
}
}
这种方法意味着我只使用jenkins分配的任何工作空间,但这也意味着我将依赖项复制到另一个工作区,感觉就像它增加了磁盘空间。
我不是100%确定这里的正确方法是什么,最佳实践是什么,等等。我正在努力寻找合适的指南。任何人都可以分享我在这里可以做些什么的想法吗?
由于