jenkins一个通用的pipline模版,区分部署回滚,支持参数化构建,多环境,多节点

使用的docker镜像进行构建的,git认证,ssh认证都在镜像中

//开发环境
def DEPLOY_DEV_HOST = [ '10.10.1.2','10.10.1.3','10.10.1.4']
//测试环境
def DEPLOY_TEST_THOST = [ '10.10.1.12','10.10.1.13','10.10.1.14']
//生产环境
def DEPLOY_PRO_THOST = [ '10.10.1.22','10.10.1.23','10.10.1.24']

def project = "agent"
def app_name = "agent"
def git_address = "ssh://git@git.example.com:10022/cloud3d/${project}.git"

// 认证
def SSH_CREDENTIAL = "/root/.ssh/"
def SSH_KEY = "/home/jenkins/.ssh/"

pipeline {
    // 拉去go环境镜像
    agent {
        docker { 
            label 'jenkins-dev'
            image 'golang:1.17-alpine' 
            args "-v ${SSH_KEY}:${SSH_CREDENTIAL}"
        }
    }

    parameters {
    //string类型参数
    string(name: 'youvar', defaultValue: 'sichenhao', description: '给我一个你的参数')
    //choice的默认值,为第一个参数选项
    choice (name: 'deploymode',choices: ['deploy', 'rollback'],description: '选择部署方式', )
    //git参数
    gitParameter( name: 'branch',branchFilter: 'origin/(.*)',defaultValue: 'dev', type: 'PT_BRANCH_TAG',description: '选择git分支')
    }

    environment { code_check_status = "" }

    stages {
        stage ("git_clone") {
            when {
                environment name:'deploymode', value:'deploy' 
            }           
            steps {  
             git branch: "$branch",  url: "$git_address"
            }
        }

        stage ("build") {
            when {
                environment name:'deploymode', value:'deploy' 
            }    
            steps {  
             println("开始构建${branch}分支")
            }
        }

        stage ("docker_build") {
            when {
                environment name:'deploymode', value:'deploy' 
            }    
            steps {  
                println("开始制造镜像")
            //获取git当前head简短
                script{
                build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
                println(build_tag)
                }
            }
        }

        stage ("deploy") {
            when {
                environment name:'deploymode', value:'deploy' 
            }
            steps {  
                script {
                    switch("${branch}"){
                        case 'dev':
                            println("开始部署${branch}分支")
                            for (deployip in DEPLOY_DEV_HOST){
                                println("${deployip}")
                            }
                        break;
                        case 'test':
                            println("开始部署${branch}分支")
                            for (deployip in DEPLOY_TEST_THOST){
                                println("${deployip}")
                            }
                            break;
                        case 'master':
                            println("开始部署${branch}分支")
                            for (deployip in DEPLOY_PRO_THOST){
                                println("${deployip}")
                            }
                        break;
                    }   
                }              
            }
        }
 
        stage ("rollback") {
            when {
                environment name:'deploymode', value:'rollback' 
            }
            steps {  
            println("开始回滚")
                script {
                    switch("${branch}"){
                        case 'dev':
                            println("开始回滚${branch}环境")
                            for (rollbackip in DEPLOY_PRO_THOST){
                                println("${rollbackip}")
                            }
                        break;
                        case 'test':
                            println("开始回滚${branch}环境")
                            for (rollbackip in DEPLOY_PRO_THOST){
                                println("${rollbackip}")
                            }
                            break;
                        case 'master':
                            println("开始回滚${branch}环境")
                            for (rollbackip in DEPLOY_PRO_THOST){
                                println("${rollbackip}")
                            }
                        break;
                    }   
                }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sicc1107

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值