Jenkins pipeline中bat或者shell命令执行结果,赋值给变量,变量不生效解决方法
例如:想利用bat脚本查询出Git_commit号,赋值给变量,下面的pipeline语句用到此变量,通过直接赋值的方式,下一条语句是无法获取到变量值的。此种写法://从项目readme中读取Git_Commit号Git_Commit =bat label: '', script: 'compile_scripts\\git_commit.bat %svn_project% %svn_branch
·
例如:想利用bat脚本查询出Git_commit号,赋值给变量,下面的pipeline语句用到此变量,通过直接赋值的方式,下一条语句是无法获取到变量值的。
此种写法:
//从项目readme中读取Git_Commit号
Git_Commit =bat label: '', script: 'compile_scripts\\git_commit.bat %svn_project% %svn_branch%'
//编译源码,其中Git_commit 获取不到值
bat label: '', script: 'python compile_scripts\\firmware_compile.py %svn_project% %svn_branch% %svn_revision% %Git_commit%'
更改为:将代码写到bat“”“”“”“”“”中。
示例1:
stage('compile source code') {
steps {
script {
bat """
FOR /F %%i IN ('compile_scripts\\git_commit.bat %svn_project% %svn_branch%') DO @set Git_commit=%%i
python compile_scripts\\firmware_compile.py %svn_project% %svn_branch% %svn_revision% %Git_commit%
xcopy /s/y/i/f "%svn_project%\\%svn_branch%\\*.zip" "D:\\firmware_history"
"""
}
}
}
示例2:
stage('镜像制作') {
echo "镜像制作----开始"
//创建一个制作镜像的临时目录
def image_root_path = "/home/temp"
//进入镜像的临时目录,开始制作镜像
sh """
mkdir -p ${image_root_path}
#获取maven工程打包后的名称
projectBuildFinalName=\$(mvn -f ${projectName} -q -Dexec.executable='echo' -Dexec.args='\${project.build.finalName}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.6.0:exec)
#将打好的jar包和Dockerfile复制到制作镜像的临时目录下
cp ./${projectName}/target/\$projectBuildFinalName.jar ${image_root_path}
cp ./${projectName}/Dockerfile ${image_root_path}
#制作镜像
cd ${image_root_path}
docker build --build-arg JAR_FILE=\$projectBuildFinalName.jar -t ${image_name} .
rm -rf ${image_root_path}
"""
echo "镜像制作----成功\n"
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)