Jenkins学习——Jenkinsfile示例一

Jenkins学习——Jenkinsfile示例一

    • 写在前头的话

写在前头的话

记菜鸟运维狗开始学习jenkins使用,走上CICD趟坑路。Jenkinsfile 用于创建pipeline,类似于Dockerfile创建镜像。格式类似yaml,还可以参考java使用方法。
jenkinsfile 可以采用两种方式编写:Scripted Pipeline以及后续引入的Declarative Pipeline,后者规定所有内容必须被一个pipeline{}包含。本文采用后者创建

// An highlighted block
pipeline {
	//表示此pipeline只在label关键字指定的slave上运行,还有其他关键字 any/docker等。 
	//即使需要针对所有对象生效,也必须要声明 agent any
    agent {label 'ab-slave***'}
    //options指定此pipeline保留5次最近执行记录,此指令用于针对pipeline的变量设置
    options { buildDiscarder(logRotator(numToKeepStr: '5')) }
    //设置键值对,类似全局变量,用于后续when/if判断
    environment { SKIP_STAGE2='false'}
    //stages是jenkinsfile的主体
    stages {
    	//第一个stage
        stage('pre-build') {
        	//steps是执行操作的主体
            steps {
                echo 'check the slave avalible disk..'
                //此脚本,获取了shell的返回值,传递给jenkins使用
                script {
                    def Used_Disk = sh returnStdout: true ,script: "df `pwd` |tail -1 |awk '{print \$5}'|cut -d\'%\' -f 1"
                    Used_Disk = Used_Disk.trim()
                    //使用java语法将str转换为int
                    int Used_Disk_Int = Integer.parseInt( Used_Disk )
                    if ( Used_Disk_Int >= 80){
                        echo "the disk usage is more than 80%"
                        //标记为failure之后,只是pipeline标红,后续stage还是会执行
                        //currentBuild.result = 'FAILURE'
                        // 需要中止pipeline时,可以使用shell的exit,后续的stage接收到非0状态会跳过执行
                        sh 'exit 1'
                    }
                }
                
                }
            }
        //第二个stage
        stage('Stage 2') {
        	//获取前面指定的变量,判断value值,若匹配则执行steps;反之可用 when { not { environment ** } }
            when {  
                    environment name: 'SKIP_STAGE2', value: 'false'
            }
            steps {
                echo 'git clone..'
                //git clone 代码。 credentialsId可通过图1获取;注意url的用户需要是jenkins上已经配置了“使用公私钥拉取仓库代码”的用户;branch默认为master
                git branch:'master', credentialsId: '*******', url: '****'
            }
        }
        //第三个stage
        stage('Stage 3') {
        	//执行shell命令,获取系统的各负载情况
            steps {
                echo 'get slave cpu usage ....'
                sh 'top -bn 1 -i -c'
                echo 'get slave mem usage ....'
                sh 'free -g'
                echo 'get slave io usage ....'
                sh 'iostat'
            }
        }
    }
}

你可能感兴趣的:(Jenkins学习)