从Github存储库中检出jenkinsfile时,jenkinsfile可以从同一存储库中调用/启动python脚本吗?

时间:2019-06-18 17:38:12

标签: python git jenkins jenkins-pipeline jenkins-groovy

我正在从SCM启动Jenkins管道脚本,Jenkins能够读取jenkins文件,但无法在该存储库中找到其余文件。是否需要以不同的方式甚至可能做到这一点?

Github存储库:

-jenkinsfile
-python_scripts/generate_json.py
node ('windows7') {
    stage('Generate json file'){
        bat 'dir'
        bat 'dir ..'
        bat 'python ./python_scripts/generate_json.py'
    }
}

无法找到python脚本:

J:\Jenkins_Slave\workspace\[redacted]\test_pipeline>python ./python_scripts/generate_json.py 
python: can't open file './python_scripts/generate_json.py': [Errno 2] No such file or directory

我还禁用了轻量级结帐功能,但这没什么作用

2 个答案:

答案 0 :(得分:1)

如果这是您的整个流程,那么您实际上缺少检出源代码的步骤:

node ('windows7') {
    stage('Generate json file'){
        checkout scm
        bat 'dir'
        bat 'dir ..'
        bat 'python ./python_scripts/generate_json.py'
    }
}

实际上,我想这就是dir通话应该已经向您显示的,对吧?

答案 1 :(得分:0)

您需要添加一个步骤来在运行构建的节点上签出源代码。读取Jenkinsfile的初始签出位于主服务器上,如果切换到其他节点,则该工作空间中没有文件。 将此添加到您的node块中。

    stage('Checkout sources') {
        checkout scm // Checks out the repo where the Jenkinsfile is located
    }

对其进行扩展:当jenkins管道读取Jenkinsfile时,它将首先在jenkins主文件中将其检出,评估该做什么以及在何处进行,即它将读取node('Windows7')并尝试获取免费的执行程序。在标签为Windows7的节点上。然后它将执行切换为在该节点上运行。

在您的情况下,它签出您的git repo,并由于初始签出是在主服务器上而切换到具有空工作区的Windows节点。这样做只是为了读取Jenkins文件,因此请保持轻量级检查,它使用较少的资源。