繁体   English   中英

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

[英]When checking out a jenkinsfile from a Github repo, can the jenkinsfile call/start a python script from that same Repo?

我正在从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

我也禁用了轻量级结帐功能,但这没什么区别

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

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

实际上,我想这是dir调用应该已经显示给您的,对吗?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM