PipelineCD流水线

1.获取镜像harbor镜像tag

1.1 jenkins安装Active Choices
在这里插入图片描述
1.2 新建一个pipelin流水线,配置级联变量。 打开配置-勾选参数化构建- 添加参数,选择Active Choices Parameter 。

**name:** Harbor_Pro
**Groovy Script:** return["base","ops","oa"]

在这里插入图片描述

在这里插入图片描述
1.3 打开配置-勾选参数化构建- 添加参数,选择Active Choices Reactive Parameter 。

**name:** Image_Name
**Groovy Script:**  def get_list = [ "bash","-c", "curl -s  -X 'GET'   'https://harbor.xx.com/api/v2.0/projects/${Harbor_Pro}/repositories?page=1&page_size=10'   -H 'accept: application/json'   -H 'authorization: Basic YWRtaW46YWRtaW4=' | xargs -d ',' -n1 | xargs -n1 | grep name | awk -F / '{print \$2}'" ]
return get_list.execute().text.tokenize("\n")
**Referenced parameters:**  Harbor_Pro

在这里插入图片描述
在这里插入图片描述
1.4 打开配置-勾选参数化构建- 添加参数,选择Active Choices Reactive Parameter 。

**name:** Image_Tag
**Groovy Script:**  def get_tag = [ "bash", "-c", "curl -s -H 'authorization: Basic YWRtaW46YWRtaW4='  -H 'Content-Type: application/json' -X GET https://harbor.xx.com/v2/${Harbor_Pro}/${Image_Name}/tags/list | sed -r 's#(\\{.*\\[)(.*)(\\]\\})#\\2#g' | xargs -d ',' -n1 | xargs -n1 | sort -t '_' -k2 -k3 -nr | head -5"]
return get_tag.execute().text.tokenize("\n")
**Referenced parameters:**  Harbor_Pro,Image_Name

1.5 应用保存,查看效果
在这里插入图片描述

2. 发布应用至k8s生产环境以及快速回滚

Pipeline脚本:

  pipeline {
  agent {
    kubernetes {
      cloud 'kubernetes'
      yaml '''
        apiVersion: v1
        kind: Pod
        spec:
          imagePullSecrets:
          - name: harbor-admin
          containers:
          - name: kubectl
            image: harbor.xx.com/ops/kubectl:1.22.2
            imagePullPolicy: IfNotPresent
            command: ["cat"]
            tty: true
      '''
    }
  }

  environment {
      Full_Image = "harbor.xx.com/${Harbor_Pro}/${Image_Name}:${Image_Tag}"
    }
  stages {
    stage('输出完整的镜像名称') {
      steps {
        sh 'echo 镜像名称-tag: ${Full_Image}'
      }
    }
    
    stage('部署应用至K8S') {
      steps {
          withCredentials([file(credentialsId: 'kubeconfig', variable: 'KUBECONFIG')]) {
            container('kubectl'){
              sh 'mkdir -p ~/.kube && cp ${KUBECONFIG} ~/.kube/config'
              sh 'kubectl set image deployment/${Image_Name} ${Image_Name}=${Full_Image} -n ${Harbor_Pro}-prod'
            }
          }
      }
    }
    stage('快速回滚') {
      steps {
          withCredentials([file(credentialsId: 'kubeconfig', variable: 'KUBECONFIG')]) {
            container('kubectl'){
              script {
                timeout(time:1 , unit: 'HOURS'){
                  def UserInput = input message: '是否回退至上一个版本', parameters: [choice(choices: ['No', 'Yes'], name: 'rollback')]
                  if (UserInput == "Yes"){
                    sh 'mkdir -p ~/.kube && cp ${KUBECONFIG} ~/.kube/config'
                    sh 'kubectl rollout undo deployment ${Image_Name} -n ${Harbor_Pro}-prod'
                  }else {
                    echo "没有选择回退"
                  }
                }
              }
            }
          }
      }
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值