Jenkins pipeline配置

示例1

//定义代码仓地址
def git_url = 'https://github.com/lookforstar/jenkins-demo.git'
//定义SWR登录指令
def swr_login = 'docker login -u cn-east-3@xxxxx -p xxxxx swr.cn-east-3.myhuaweicloud.com'
//定义SWR区域
def swr_region = 'cn-east-3'
//定义需要上传的SWR组织名称
def organization = 'container'
//定义镜像名称
def build_name = 'jenkins-demo'
//部署集群的证书ID
def credential = 'k8s-token'
//集群的APIserver地址,需保证从Jenkins集群可以正常访问该地址
def apiserver = 'https://192.168.0.100:6443'

pipeline {
    agent any
    stages {
        stage('Clone') { 
            steps{
                echo "1.Clone Stage" 
                git url: git_url
                script { 
                    build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim() 
                } 
            }
        } 
        stage('Test') { 
            steps{
                echo "2.Test Stage" 
            }
        } 
        stage('Build') { 
            steps{
                echo "3.Build Docker Image Stage" 
                sh "docker build -t swr.${swr_region}.myhuaweicloud.com/${organization}/${build_name}:${build_tag} ." 
                //${build_tag}表示获取上文中的build_tag变量作为镜像标签,为git rev-parse --short HEAD命令的返回值,即commit ID。
            }
        } 
        stage('Push') { 
            steps{
                echo "4.Push Docker Image Stage" 
                sh swr_login
                sh "docker push swr.${swr_region}.myhuaweicloud.com/${organization}/${build_name}:${build_tag}" 
            }
        } 
        stage('Deploy') {
            steps{
                echo "5. Deploy Stage"
                echo "This is a deploy step to test"
                script {
                sh "cat k8s.yaml"
                echo "begin to config kubenetes"
                try {
                    withKubeConfig([credentialsId: credential, serverUrl: apiserver]) {
                        sh 'kubectl apply -f k8s.yaml'
                        //该YAML文件位于代码仓中,此处仅做示例,请您自行替换
                    }
                    println "hooray, success"
                } catch (e) {
                    println "oh no! Deployment failed! "
                    println e
                }
                }
            }
        }
    }
}

示例2

node('master'){
    stage('Prepare') {
        echo "0. Prepare Stage"
        script {
            image_pull_secret = 'default-secret'
            swr_endpoint = 'swr.ap-southeast-2.myhuaweicloud.com'
            swr_org = 'paas-poc'
            image_name = 'jenkins-sample01'
            docker_login_username = 'ap-southeast-2@OLEWXUQMRAC8LNMUPSW3'
            docker_login_password = '1f31195cba059bae0f79d42aaa39e2cf93b4da44ec7a386a0c3e6d9c154f2db0'
        }
    }
    stage('Clone') {
        echo "1.Clone Stage"
        git url: "https://github.com/ibusybox/jenkins-demo.git"
        script {
            build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
        }
    }
    stage('Test') {
    echo "2.Test Stage"
    }
    stage('Build') {
        echo "3.Build Docker Image Stage"
        sh "docker build -t ${swr_endpoint}/${swr_org}/${image_name}:${build_tag} ."
    }
    stage('Push') {
        echo "4.Push Docker Image Stage"
        sh "docker login -u ${docker_login_username} -p ${docker_login_password} ${swr_endpoint}"
        sh "docker push ${swr_endpoint}/${swr_org}/${image_name}:${build_tag}"
    }
    stage('Deploy') {
    echo "5. Deploy Stage"
    echo "This is a deploy step to test"
    sh "sed -i 's/cnych\\/jenkins-demo:<BUILD_TAG>/${swr_endpoint}\\/${swr_org}\\/${image_name}:${build_tag}/' *.yaml"
    sh "sed -i 's/<IMAGE_PULL_SECRET>/${image_pull_secret}/' *.yaml"
    sh "cat *.yaml"
    echo "begin to config kubenetes"
    try { 
        kubernetesDeploy(
            kubeconfigId: "weather2",
            configs: "k8s.yaml")
        println "hooray, success"
    } catch (e) {
        println "oh no! Deployment failed! "
        println e
    }
    }
}

donation