管道步骤无法解析文件路径

时间:2017-04-12 11:15:52

标签: jenkins protractor jenkins-pipeline

我无法在我定义的阶段完成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可以在一个步骤中使用吗?

有人可以提供有关此处可能发生的事情的任何建议吗?

由于

1 个答案:

答案 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'
          '''
        }
      }
    }
  }
}