如何输出在jenkins控制台的一个步骤中动态更新的变量。我为工作传递的配置文件(环境文件)

时间:2019-02-15 23:27:58

标签: jenkins pipeline

我有一个配置文件,该文件具有一些环境变量,其中包括一个名为MONGO_UUID的变量,我通过configFileProvider插件将此变量传递到测试步骤,然后按以下步骤将其保存到.env文件:

stage('Build ') {
    steps {
       configFileProvider([configFile(fileId: 'jenkins_config_filename', variable: "CONFIG_FILE")]) {                               
            sh '''              
                cp -f $CONFIG_FILE ./.env
                npm run test     // this step dynamically updates MONGO_UUID
                echo "$MONGO_UUID"  // trying to output newly updated value here

'''
jenkins_config_filename has following format:
MONGO_HOST=123.123.123.1
MONGO_DB=dbname
MONGO_US=user
MONGO_UUID=null

我想要做的是输出变量MONGO_UUID,该变量通过配置文件传递到测试步骤,并且MONGO_UUID的值在此过程中得到更新。我可以看到MONGO_UUID已更新,因为我可以在mongodb中看到新记录,但是我想知道如何在jenkins控制台中回显该值。

1 个答案:

答案 0 :(得分:0)

npm run test之后添加此行(根据您的MongoDB配置进行适当的更改):

MONGO_UUID=`mongo db.collection.find("whatever you query is")`

,然后您可以将变量echo移至Jenkins输出。 如果要更新文件,可以使用sed,如下所示:

sed -i "s/MONGO_UUID=.*/MONGO_UUID=${MONGO_UUID}/" .env