美文网首页
Jenkins pipeline demo - 获取python

Jenkins pipeline demo - 获取python

作者: fu11 | 来源:发表于2022-03-17 23:42 被阅读0次

解决:获取 python script 输出结果,赋值为 pipeline 的变量,在不同的 stage 中使用。

在 Jenkins Job 中,添加一个 pre script 来提高自动化程度,将这个脚本的输出作为其他主要流程build的参数,因此,build 参数的逻辑由 pre script 来控制,而不改变main job的逻辑。

下面的 sample 是通过获取一个 python 脚本的 console output 到 pipeline,然后再传递给其他 step 使用。

方法和 sample

python script 中 print 或 sys.stdout.write 的输出,Jenkins 都可以获取到。只需要在pipeline script 中使用下面的方法,会获取到 script 的所有 output.

script {
            value = sh(script: 'python xxx.py', returnStdout: true)
            // 使用 trim() 可以去掉打印的 \n
            // value = sh(script: 'python xxx.py', returnStdout: true).trim()
        }

python script

func test_value 是为了说明 return value 但并不输出到console,脚本执行结束后 Jenkins 并获取不到。下面的脚本,Jenkins 获取到的是 “Value: 2 3”。为了 pipeline 处理方便,可以在脚本中控制输出。

# use_python_value.py
import sys

def test_value():
    return 2


if __name__ == '__main__':
    print('Value: %s %s' % (2, 3))
    # sys.stdout.write('Value stdout: %s\n' % 2)
    # test_value()

pipeline script

sample pipeline 中设置了三个stage,Preparation中定义一个变量,Get number 执行python 脚本,获取输出,Result 中使用该变量。


pipeline {

    agent any

    stages {

    stage('Preparation') {

        steps {

        echo 'Declaration for a variable'

        script {
        // value: global variable
        value = '0'
        // def value: local variable
        // def value = '0'

        }}

        }

    stage('Get number') {

        steps {

        echo "Before get number value is $value"

        script {
            value = sh(script: 'python /Users/<username>/WorkSpace/learn-Jenkins/pipeline/use_python_value.py', returnStdout: true)

        }

        }

    }

    stage('Results') {

        steps {

        echo "Now value is $value"

        }

    }

    }

    }

Jenkins pipeline sample 执行结果

Jenkins Console Output

相关文章

网友评论

      本文标题:Jenkins pipeline demo - 获取python

      本文链接:https://www.haomeiwen.com/subject/ddbbdrtx.html