例如:想利用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"
    }
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐