我正在从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
我还禁用了轻量级结帐功能,但这没什么作用
答案 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文件,因此请保持轻量级检查,它使用较少的资源。