使用Jenkins时更改环境变量

时间:2019-01-04 12:46:44

标签: jenkins environment-variables environment

我正在尝试使用Jenkins运行python测试并创建覆盖率报告。

我已经编译了与python绑定的应用程序-称其为pythonX-为执行该应用程序的各个部分设置了环境。现在,当我想对部分代码运行测试时,我可以运行

d:\my_app\sys\pythonX.exe -m pytest d:\user\repos\my_app\tests\unit

所有工作都非常好,因为pythonX知道一切在哪里。

为此,我正在使用

stage('Run tests') {
        steps {
            bat 'd:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit'
        }
}

。 但是有一个问题,这个pythonX在应用程序附带的代码上运行测试,因此已经构建好了。我不希望对仍然本地的代码运行测试。

pythonX添加了一个环境变量PYTHONPATH,用于指定源代码的位置,但是每当我通过pythonX.exe启动bat时,它都会改变我之前添加的内容。

我首先尝试的是像这样使用withEnv

stage('Run tests') {
        steps {
            withEnv(['PATH+PYTHONPATH=d:\\user\\repos\\my_app']){
                bat 'd:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit'
            }
        }
}

但这没有帮助。

我尝试的其他方法是设置环境,然后更改PYTHONPATH变量,然后在现有环境中通过pythonX运行测试。 这是代码

stage('Run tests') {
        steps {
            bat '''
            d:\\my_app\\sys\\pythonX.exe  --debug=cmd
            set PYTHONPATH= d:\\user\\repos\\my_app;%PYTHONPATH%
            d:\\my_app\\sys\\pythonX.exe -m pytest d:\\user\\repos\\my_app\\tests\\unit
            '''
        }
}

但这不起作用。我想这是用它自己的PYTHONPATH环境变量覆盖的。 有谁知道该如何克服?

0 个答案:

没有答案