美文网首页
一个Pipeline示例

一个Pipeline示例

作者: CaiGuangyin | 来源:发表于2019-04-29 03:16 被阅读0次

    声明式pipeline

    #!groovy
    // 此pipeline是声明式写法
    // 注意: 不能在 sh '执行命令' 中定义变量,否则执行此pipeline时会报错“No such property” 
    // 要想在 sh '执行命令' 中使用变量,需要先在environment{}中提前把变量定义好,才可以在sh代码中使用变量。 
    
    // 而script式的pipeline,要想在sh代码中使用变量,则需要这样定义: env.tomcat_home = "/usr/local/tomcat2"
    // 在sh代码中这样引用变量${tomcat_home}即可
    
    pipeline {
        agent {node {label 'master'}}
    
        environment {
            PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
        }
    
        stages {
            stage("pull code") {
                steps {
                    sh "git config --global http.sslVerify false"
                    dir("${env.WORKSPACE}") {
                        git branch: 'master',
                        credentialsId: '036938fb-888b-47d3-92cf-f9acc7f4fdaf',
                        url: 'http://gitlab.cgy.com:8880/dev-java/mybank-demo-maven.git'
                    }
                }
            }
    
            stage("compile code") {
                steps {
                    sh 'mvn -U -B clean install'
                }
            }
    
            stage("deploy project") {
    
                environment {
                    WORKSPACE = "${env.WORKSPACE}"
                    WAR_PATH = "${env.WORKSPACE}/target/ROOT.war"
                    tomcat_home="/usr/local/tomcat2"
                    app_home="${tomcat_home}/webapps/ROOT/"
                }
    
                steps {
                    sh """
                    set -e -u -x
    
                    echo "JOB_PATH: ${WORKSPACE}"
    
                    echo "[INFO] 关闭tomcat"
                    sudo ${tomcat_home}/bin/shutdown.sh
    
                    echo "[INFO] 清空app_home: $app_home"
                    sudo rm -rf ${app_home}*
    
                    echo "[INFO] 拷贝编译完成的war包"
                    sudo cp -f "${WAR_PATH}" ${app_home}
                    cd ${app_home}
                    sudo jar xf ROOT.war
    
                    echo "[INFO] 启动tomcat"
                    sudo ${tomcat_home}/bin/startup.sh
                    """
                }
            }
        }
    }
    

    // 此pipeline是声明式写法
    // 注意: 不能在 sh '执行命令'中定义变量,否则执行此pipeline时会报错“No such property”
    // 要想在 sh '执行命令' 中使用变量,需要先在environment{}中提前把变量定义好,才可以在sh代码中使用变量。

    脚本式pipeline

    #!groovy
    
    node {
        stage("pull code") {
            sh 'git config --global http.sslVerify false'
            dir("${env.WORKSPACE}") {
                git branch: 'master',
                credentialsId: '036938fb-888b-47d3-92cf-f9acc7f4fdaf',
                url: 'http://gitlab.cgy.com:8880/dev-java/mybank-demo-maven.git'
            }
        }
    
        stage("compile code") {
            sh """
            mvn -U -B clean install
            """
        }
    
        
        stage("deploy project") {
            env.WORKSPACE = "${env.WORKSPACE}"
            env.WAR_PATH = "${env.WORKSPACE}/target/ROOT.war"
            env.tomcat_home = "/usr/local/tomcat2"
            env.app_home = "${tomcat_home}/webapps/ROOT/"
    
            sh """
            set -e -u -x
    
            echo "JOB_PATH: ${WORKSPACE}"
    
            echo "[INFO] 关闭tomcat"
            sudo ${tomcat_home}/bin/shutdown.sh
    
            echo "[INFO] 清空app_home: $app_home"
            sudo rm -rf ${app_home}*
    
            echo "[INFO] 拷贝编译完成的war包"
            sudo cp -f ${WAR_PATH} ${app_home}
            cd ${app_home}
            sudo jar xf ROOT.war
    
            echo "[INFO] 启动tomcat"
            sudo ${tomcat_home}/bin/startup.sh
            """
        }
    }
    

    // 而script式的pipeline,要想在sh代码中使用变量,则需要这样定义:例如 env.tomcat_home = "/usr/local/tomcat2"
    // 在sh代码中这样引用变量${tomcat_home}即可.

    以上两种pipeline写法可以达到相同的效果。

    相关文章

      网友评论

          本文标题:一个Pipeline示例

          本文链接:https://www.haomeiwen.com/subject/gafenqtx.html