首页 > 解决方案 > 如何在詹金斯控制台的一个步骤中输出动态更新的变量。我为工作传递的配置文件(环境文件)

问题描述

我有一个配置文件,其中包含一些环境变量,包括一个名为 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 控制台中回显该值。

标签: jenkinsjenkins-pipeline

解决方案


在以下内容之后添加这一行(根据您的 MongoDB 配置进行适当的更改)npm run test

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

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

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

推荐阅读