基本语法:

一个pipeline中只能包含一个stages。

一个stages可以包含多个stage('xxx')。

一个stage('xxx')可以包含一个steps。


环境变量:

自定义变量和系统变量重名时,自定义变量会覆盖系统原有的变量。

在系统设置里面可以添加夸pipeline的环境变量。

pipeline {
	agent any
	// 自定义环境变量
	environment {
		CC = 'clang'
	}
	stages {
		stage('env example'){
			steps{
				// 使用内置变量
				echo "Running ${env.BUILD_NUMBER} on ${env.JENKINS_URL}"
				echo "Running $env.BUILD_NUMBER on $env.JENKINS_URL"
			}
		}
		stage('printenv'){
			steps{
				// 打印出所有变量
				//sh 'printenv'
				echo 'printenv'
			}
		}
		stage('diyenv'){
			// 自定义环境变量,当前stage有效
			environment {
				AA = '123'
			}
			steps{
				// 输出环境变量
				echo "${AA} ${CC}"
				sh 'printenv'
			}
		}
	}
}

从git拉取代码:

credentialsId:git拉取代码使用到的认证ID,jenkins->凭据->右边即可看到,没有凭据添加后会自动生成这个ID。

#!groovy
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                git  credentialsId: 'ddd88470-e818-44d1-b995-b66873574626', url: 'http://git.vphotos.cn/zhuqiyang/infra_example1.git'
                sh "ls -al"
            }
        }
    }
}

或者下载到指定目录:

#!groovy
pipeline {
    agent any
    stages {
        stage('拉取代码') {
            steps {
                dir("./"){
                    git  credentialsId: 'ddd88470-e818-44d1-b995-b66873574626', url: 'http://git.vphotos.cn/zhuqiyang/infra_example1.git'
                }
                sh "ls -al"
            }
        }
    }
}

指定分支:

git branch: 'master', credentialsId: 'ddd88470-e818-44d1-b995-b66873574626', url: 'http://git.vphotos.cn/zhuqiyang/infra_example1.git'


pipeline脚本示例:

#!groovy
pipeline {
    agent any
    environment {
        IMAGE="dockerrepos.vphotos.cn/test/test_infra_example1"
    }
    stages {
        stage('拉取代码') {
            steps {
                dir("./"){
                    git (
                        branch: 'master', 
                        credentialsId: 'ddd88470-e818-44d1-b995-b66873574626', 
                        url: 'http://git.vphotos.cn/zhuqiyang/infra_example1.git', 
                        changelog: 'true'
                    )
                }
            }
        }
        stage('构建镜像'){
            steps{
                sh "ls -al"
                dir("./docker"){
                    sh '''
                        VERSION=$(git rev-parse --short HEAD)
                        echo $VERSION
                        docker build -t ${IMAGE}:${VERSION} .
                        docker push ${IMAGE}:${VERSION}
                        docker rmi ${IMAGE}:${VERSION}
                    '''
                }
            }
        }
    }
}

try-catch:加上try-catch之后如果try中的语句出错就会被catch捕获输出错误信息,而不会终止程序

script{
	try{
		gradleHome = tool "GRADLE"
		sh """
		${gradleHome}/bin/gradle -v
		"""
	}catch(e){
		println(e)
	}
}