访问Python变量到Jenkins Pipeline中的其他阶段

aamkag61  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(92)

我的python脚本看起来像
test.py

a=10
b=20
c=10+20

我的Jenkins文件看起来像

pipeline{
    agent any
    stages{
        stage("Executing python script"){
            steps{
                sh 'python test.py'                                                     
            }
        }

    stage("Getting python variable"){
        steps{
            sh "The value of c is ${c}"
          }
    
    }
    }
}

我如何访问阶段2中的c值,该值在阶段1中存在于test.py中

0pizxfdo

0pizxfdo1#

在两个独立的shell调用之间保留状态的唯一方法是将其保留在Jenkins中。要将状态(在您的案例中为c)获取到Jenkins中,您需要将其序列化到控制台(或文件),然后在Jenkins中捕获该输出。在你的情况下,一个简单的python中的print(c)就足够了,但是如果数据结构变得更复杂,序列化为JSON是一个流行的选择。然后在Jenkins中这样做:

// Define a variable outside the pipeline
def cValue
pipeline {
...
cValue = sh(script: 'python test.py', returnStdout: true).trim()

然后,您需要在Jenkins中(如果需要使用它)或将其传递到其他脚本中来实现该状态。在您的例子中,强制转换为int是所需的全部,但显然对于列表和Map等会变得更加复杂。

相关问题