我无法在我定义的阶段完成shell命令的完成:
stages {
stage('E2E Tests') {
steps {
node('Protractor') {
checkout scm
sh '''
npm install
sh 'protractor test/protractor.conf.js --params.underTestUrl http://192.168.132.30:8091'
'''
}
}
}
}
shell命令发出一个带有配置文件参数的量角器调用,但是当量角器试图检索它时,找不到这个文件。
如果我从checkout scm
步骤查看repo签出位置的工作空间目录,我可以看到测试目录存在,配置文件存在,sh
步骤正在引用
所以我不确定为什么无法找到该文件。
我考虑过尝试验证在发布量角器命令时可以看到的文件。
类似于:
stages {
stage('E2E Tests') {
steps {
node('Protractor') {
checkout scm
def files = findFiles(glob: 'test/**/*.conf.js')
sh '''
npm install
sh 'protractor test/protractor.conf.js --params.underTestUrl http://192.168.132.30:8091'
'''
echo """${files[0].name} ${files[0].path} ${files[0].directory} ${files[0].length} ${files[0].lastModified}"""
}
}
}
}
但这不起作用,我不认为findFiles可以在一个步骤中使用吗?
有人可以提供有关此处可能发生的事情的任何建议吗?
由于
答案 0 :(得分:0)
进行你正在尝试的调试(查看文件是否实际存在)你可以将findFiles包装在脚本中(确保你的echo在失败的步骤之前)或者在“sh”中使用基本查找像这样的步骤:
stages {
stage('E2E Tests') {
steps {
node('Protractor') {
checkout scm
// you could use the unix find command instead of groovy's findFiles
sh 'find test -name *.conf.js'
// if you're using a non-dsl-step (like findFiles), you must wrap it in a script
script {
def files = findFiles(glob: 'test/**/*.conf.js')
echo """${files[0].name} ${files[0].path} ${files[0].directory} ${files[0].length} ${files[0].lastModified}"""
sh '''
npm install
sh 'protractor test/protractor.conf.js --params.underTestUrl http://192.168.132.30:8091'
'''
}
}
}
}
}