• 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 root@192.168.124.9 "cmd /c net stop jenkins_test"
    						echo "删除原始文件"
    						ssh root@192.168.124.9 "cmd /c rd/s/q D:/root/apache-tomcat-8.5.24/webapps"
    						echo "开始使用scp传输文件"
    						scp "${WORKSPACE}/target/ws.war"  root@192.168.124.9:/
    						echo "开始调用远程tomcat进行重启"
    						ssh root@192.168.124.9 "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 root@192.168.124.9 "cmd /c net stop jenkins_test"
    在192.168.124.9服务器上执行“net stop jenkins_test”命令,关闭jenkins_test服务(注册的tomcat服务)
    
    ssh root@192.168.124.9 "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"  root@192.168.124.9:/
    使用scp传输文件
    WORKSPACE为环境变量,是该项目的路径
    scp后面跟的是需要传输的文件,需要根据各位编译打包生成的文件名修改该参数,也可以使用合适的环境变量使用动态的语句。
    scp后面第二个参数跟传输目标:root是登录远程服务的身份;@号跟ip地址;:后跟路径。该路径根据目标服务器而定,如果根据《jenkins使用文档》1.1windows 配置ssh服务,则/对应的是freeSSHd配置的SFTP home path。其他路径依此路径改写。
    
    ssh root@192.168.124.9 "cmd /c  net start jenkins_test"
    在192.168.124.9服务器上执行“net start jenkins_test”命令,开启jenkins_test服务(注册的tomcat服务)
    
  • 相关阅读:
    yum clean all大坑解决
    RHEL 7 “There are no enabled repos” 的解决方法
    exportfs命令 – 管理NFS服务器共享的文件系统
    Linux放大缩小字体的快捷键
    chcon命令详解
    通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
    安装RHEL7配置本地yum源 -- yum不能安装时,在本地安装,亲测成功
    块存储、文件存储、对象存储意义及差异
    在Windows Server 2012 R2域环境中禁用(取消)密码复杂策略
    bat脚本静默安装软件示例
  • 原文地址:https://www.cnblogs.com/cxy2016/p/12705422.html
Copyright © 2020-2023  润新知