imirsh

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

Jenkins Pipeline 部署 Kubernetes 应用

项目说明

部署思路

  • 克隆代码
  • 编译打包
  • 构建镜像
  • 将镜像推送到本地镜像仓库
  • 修改 k8s.yaml 文件的 tag
  • 应用资源清单 k8s.yaml
podTemplate(cloud: 'kubernetes',containers: [
    containerTemplate(name: 'tools', image: 'registry.cn-beijing.aliyuncs.com/dengyou/kube-ops:tools', ttyEnabled: true, command: 'cat'), 
    containerTemplate(name: 'maven3', image: 'registry.cn-beijing.aliyuncs.com/dengyou/kube-ops:maven3', command: 'cat', ttyEnabled: true),
    ],
    volumes: [
        hostPathVolume(hostPath: '/var/run/docker.sock', mountPath: '/var/run/docker.sock'),
        hostPathVolume(hostPath: '/root/.kube/', mountPath: '/root/.kube/'),
        hostPathVolume(hostPath: '/root/.docker', mountPath: '/root/.docker'),
        hostPathVolume(hostPath: '/data/repo', mountPath: '/usr/local/apache-maven/repo')
        // /data/repo 要手动创建出来,并给与相应的权限
        // hostPathVolume(hostPath: '/etc/hosts',mountPath: '/etc/hosts'),
        // hostPathVolume(hostPath: '/etc/docker//etc/docker/certs.d/',mountPath: '/etc/docker//etc/docker/certs.d/')  
    ]
)
{
   node(POD_LABEL) {
        stage('Clone'){
            container('tools') {
                echo "1. Clone Stage"
                git url: "https://github.com/imirsh/mvnweb-demo.git"
                script {
                    build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
                }
            }
        }
        stage('Package') {
            container('maven3') {
                echo "3. Package From Source Code"
                sh "mvn install"
            }
        }
        stage('Build') {
            container('tools') {
                echo "3. Build Docker Image Stage"
                sh "docker build -t registry.cn-beijing.aliyuncs.com/dengyou/mvnweb-demo:${build_tag} ."
                 // sh "docker build -t reg.linux.io/mvnweb/mvnweb-demo:${build_tag}  ."
            }
        }
        stage('Push') {
            container('tools') {
                echo "4. Push Docker Image Stage"
                // withCredentials([usernamePassword(credentialsId: 'registry.cn-beijing.aliyuncs.com_Auth', usernameVariable: 'aliUser',  passwordVariable: 'aliPassword')]) {
                //     sh "docker login -u ${aliUser} -p ${aliPassword} registry.cn-beijing.aliyuncs.com"
                //     sh "docker push registry.cn-beijing.aliyuncs.com/dengyou/jenkins-demo:${build_tag}"
                // }
                sh "docker push registry.cn-beijing.aliyuncs.com/dengyou/mvnweb-demo:${build_tag}"
                // sh "docker push  reg.linux.io/mvnweb/mvnweb-demo:${build_tag} "
        }
      }
        stage('YAML') {
            container('tools'){
                sh "sed -i 's@<BUILD_TAG>@${build_tag}@g' k8s.yaml"
                sh '/usr/local/bin/kubectl apply -f k8s.yaml --record'
            }
        }
    }
}

posted on   imirsh  阅读(830)  评论(0编辑  收藏  举报

点击右上角即可分享
微信分享提示