Windows上Jenkins声明式管道中的变量扩展

DWRoelands

考虑以下管道:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = '%path_workspace_root%\\MyApplication.sln' /* this variable doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}

此构建作业失败,因为%path_workspace_root%不会扩展,并且我收到一条错误消息,即找不到我要查找的文件。

我试过用双引号声明字符串:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = "%path_workspace_root%\\MyApplication.sln" /* this variable still doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}

我也尝试过使用双引号和延迟的扩展语法:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = "!path_workspace_root!\\MyApplication.sln" /* this variable still doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}
  1. 使%path_workspace_root%变量正确扩展的正确语法是什么?
  2. 我是在做这种“艰难的方式”吗(我是詹金斯的新手),有没有更简单的方法来完成我的工作?我想象随着管道的变大,我将需要设置许多这些环境变量。
DWRoelands

使用%%语法的变量扩展仅可用于BAT''命令。我需要标准的詹金斯语法$ {}:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = '${path_workspace_root}\\MyApplication.sln' /* this variable doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jenkins声明式管道中的动态变量

Jenkins声明式管道中的条件环境变量

Jenkins 声明式管道中的并行项

如何更改Jenkins声明式管道环境变量?

Jenkins 声明式管道在后期获取环境变量

Jenkins声明式管道锁名称(带变量)

无法让Sonarqube在Jenkins声明式管道中运行

确定Jenkins声明式管道中的失败阶段

在jenkins声明式管道文件中重用groovy脚本

如何在 Jenkins 声明式管道中循环参数值

如何在声明式管道中处理全局变量?

在Jenkins声明式管道中使用waitForQualityGate

Jenkins动态声明式管道参数

Jenkins声明式管道条件后动作

Jenkins声明式管道并行阶段

Jenkins声明式管道Docker注册中心

jenkins声明式管道忽略了jenkinsfiles的changelog

Jenkins 声明式管道 - 如何将表达式分配给 shell 变量

在Jenkins声明式管道中将git committer的名称设置为环境变量

如何在Jenkins声明式管道的agent部分中使用环境变量?

在Jenkins多分支声明式管道项目中传递变量

如何使用全局变量设置Jenkins声明式管道环境?

Jenkins,如何在 Jenkins 声明式管道中运行 XmlParser/读取 XML

存储库中没有Jenkins文件的Jenkins声明式管道

在阶段结束之后或阶段开始之前触发Jenkins声明式管道中的操作?

是否可以在Jenkins声明式管道中暂停阶段直到到达某个时间?

是否可以在Jenkins声明式管道中按分支设置代理

在并行阶段之前在jenkins声明式管道中创建顺序步骤

如何在Jenkins声明式管道中检测哪个并行阶段失败?