我正在尝试将python脚本的输出分配给变量。
这是我的电话
stage('Deployment on FTP') {
steps {
script {
def warName = sh(script: 'python ../scripts/myPythonScriptHere.py', returnStdout: true)
}
...
}
}
这是我的配置(在Linux服务器上):
ci/
-- prod/
-- Jenkinsfile.groovy
-- scripts/
-- myPythonScriptHere.py
Jenkins告诉无法打开文件“ ...” [Errno 2]没有这样的文件或目录
我该怎么做?
谢谢
答案 0 :(得分:0)
您在此处所做的声明本身是错误的。在sh(script:....)内部,该函数需要一个shell脚本。在这里,python执行将无法正常工作。要获取python的输出,您将必须编写一个shell脚本来为您完成这项工作。这意味着,您将必须在sh(script:...)内编写一个shell脚本,它将执行您的python脚本并将其输出捕获到一个变量中并返回它。例如:
steps {
script {
def warName = sh(script: '#!bin/bash
var output = python ../scripts/myPythonScriptHere.py
return output', returnStdout: true)
}
}
}```
答案 1 :(得分:0)
stage('Deployment on FTP') {
steps {
script {
env.WAR_NAME = sh(script: "python scripts-ci/scripts/build/front/scripts/lib/war_name.py ${customerProfileId} ${FORCE_CUSTOMER_NAME}", returnStdout: true).toString().trim()
}
}
}
这是我当前 Jenkinsfile 工作的代码(当我克隆需要的 python 脚本时,scripts-ci beeing 文件夹。
stage("Git checkout") {
steps {
dir("scripts-ci") {
git branch: "${GIT_BRANCH_CI}",
credentialsId: "${GIT_CREDENTIALS_ID}",
url: "${GIT_URL_CI}"
}
}
}