jenkins(二)Pipeline语法速成

jenkins(二)

Pipeline语法速成

标签: 运维 jenkins 持续集成

背景描述:

为了交付文档,先写个速成的版本,目的是供其他同事基于此模板快速配置使用,后续要继续深入研究。

查资料的时候看到了这个文章:

Jenkins pipeline脚本编写实践分享(三)

深知自己在这方面还是个弟弟,还是要继续深入学习。

1.语法模板

配置:

pipeline {
    agent any
    stages {
         stage('pullcode'){
            steps{
                checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: ''
                , excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: ''
                , locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'd4dc650e-a10e-487a-bad9-d6dbf7ee4f45', depthOption: 'infinity'
                , ignoreExternalsOption: true, local: '.', remote: 'http://39.98.82.231:86/svn/gkg/ws/ws/trunk']], quietOperation: true
                , workspaceUpdater: [$class: 'UpdateUpdater']])
            }
        }

        stage('Build') {
            steps {
                sh '''
                    echo "开始编译打包过程"
                    mvn clean && mvn package -DskipTests=true
					echo "编译打包过程结束"
                '''
            }
        }
        stage('Test'){
            steps {
                sh 'echo "Test stage"'
            }
        }
        stage('Deploy') {
        	steps {
                withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
                    sh '''
						echo "关闭服务"
						ssh [email protected] "cmd /c net stop jenkins_test"
						echo "删除原始文件"
						ssh [email protected] "cmd /c rd/s/q D:/root/apache-tomcat-8.5.24/webapps"
						echo "开始使用scp传输文件"
						scp "${WORKSPACE}/target/ws.war"  [email protected]:/
						echo "开始调用远程tomcat进行重启"
						ssh [email protected] "cmd /c  net start jenkins_test"
					'''
                }
        	}
        }
    }
}

1.1概述

这段脚本定义了四个步骤:pullcodeBuildTestDeploy即获取代码、编译、测试、发布。

1.2pullcode

获取代码

参考

《jenkins使用文档》2.5生成获取代码语句

将生成的代码直接复制到:

stage('pullcode'){
    steps{
        //复制到此处
    }
}

1.3Build

编译代码

sh 声明使用shell命令 使用shell执行后面的命令
Pipeline使用groovy的语法,三个```包裹的内容是一个字符串,并可以在其中引用变量
echo shell输出命令
mvn clean && mvn package -DskipTests=true  mvn命令,打包并跳过测试,可根据自己的需求指定参数

1.4Test

目前没有测试环节,暂时跳过

1.5Devlop

withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {}
用于声明该模块下的语句进程终止后,不关闭子进程

之前已经配置好了jenkins与部署服务器之间的通信,可以直接使用ssh操作远程服务器:

ssh [email protected] "cmd /c net stop jenkins_test"
在192.168.124.9服务器上执行“net stop jenkins_test”命令,关闭jenkins_test服务(注册的tomcat服务)
ssh [email protected] "cmd /c rd/s/q D:/root/apache-tomcat-8.5.24/webapps"
在192.168.124.9服务器上执行“rd/s/q D:/root/apache-tomcat-8.5.24/webapps”命令,删除rd/s/q D:/root/apache-tomcat-8.5.24/webapps路径下所有文件及文件夹
scp "${WORKSPACE}/target/ws.war"  [email protected]:/
使用scp传输文件
WORKSPACE为环境变量,是该项目的路径
scp后面跟的是需要传输的文件,需要根据各位编译打包生成的文件名修改该参数,也可以使用合适的环境变量使用动态的语句。
scp后面第二个参数跟传输目标:root是登录远程服务的身份;@号跟ip地址;:后跟路径。该路径根据目标服务器而定,如果根据《jenkins使用文档》1.1windows 配置ssh服务,则/对应的是freeSSHd配置的SFTP home path。其他路径依此路径改写。
ssh [email protected] "cmd /c  net start jenkins_test"
在192.168.124.9服务器上执行“net start jenkins_test”命令,开启jenkins_test服务(注册的tomcat服务)

猜你喜欢

转载自www.cnblogs.com/cxy2016/p/12705422.html