jenkins--pipline(二)

pipeline示例

1.声明式pipeline
该方式要想在 sh '执行命令' 中使用变量,需要先在environment{}中提前把变量定义好,才可以在sh代码中使用变量。

#!groovy
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.xxx.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
                """
            }
        }
    }
}

 

2.脚本式pipeline
该方式要想在sh代码中使用变量,则需要这样定义: env.tomcat_home = "/usr/local/tomcat2",然后在sh代码中这样引用变量${tomcat_home}即可

#!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.xxx.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
        """
    }
}
以上两种pipeline写法可以达到相同的效果。

 

posted @ 2020-11-11 19:13  盲仔不瞎忙  阅读(40)  评论(0编辑  收藏  举报