12 pipeline 风格发布项目到k8s

书接上回:https://www.cnblogs.com/huningfei/p/17140068.html,
上篇介绍了如何使用自由风格发布k8s项目,这次介绍如何使用pipeline发布k8s项目。

一 背景说明

如果要使用pipeline,前提是代码仓库里面有一个Dockfile的文件,和deploy.yml部署文件
项目地址为:demo-test: src/main/resources/application.properties.端口更改

12 pipeline 风格发布项目到k8s_第1张图片

二 获取pipeline里面的语法

2.1 git拉取代码-语法

第一种方法:

12 pipeline 风格发布项目到k8s_第2张图片


第二种方法:

12 pipeline 风格发布项目到k8s_第3张图片

2.2 maven编译-语法

12 pipeline 风格发布项目到k8s_第4张图片

2.3 拷贝yaml部署文件到k8s-master-语法

12 pipeline 风格发布项目到k8s_第5张图片

12 pipeline 风格发布项目到k8s_第6张图片

2.4 上传镜像到docker仓库-语法

12 pipeline 风格发布项目到k8s_第7张图片

12 pipeline 风格发布项目到k8s_第8张图片


以上四步,都会分别生成对应的pipeline命令,粘贴到pipeline脚本里即可

三 设置自动构建

如果没有下面这个选项,就需要安装gitlab插件,

12 pipeline 风格发布项目到k8s_第9张图片

如果在gitlab里添加jekins的地址报错,去掉这个选项

12 pipeline 风格发布项目到k8s_第10张图片

四 pipeline脚本内容

4.1 普通pipeline方式

pipeline{
  agent any
environment {
 
  registry="registry.cn-hangzhou.aliyuncs.com/huningfei/welcome"
  image_name="$registry:$BUILD_NUMBER"
}

  stages {
  
     stage('拉取代码'){
         steps {
          git credentialsId: '2751f03c-ba70-494a-a13c-cac7f9c3ffcc', url: 'https://gitee.com/huningfei/demo-test.git'
         }
      }
      // 第二步
      stage('代码编译'){
          steps {
         sh '/var/jenkins_home/mvn/bin/mvn clean package -Dmaven.test.skip=true'
          }
      }

  stage('通过dockerfile构建镜像'){
         steps {
          sh '''cp -r $WORKSPACE/target/*.jar  .
                docker build -t mytest .'''
         }
      }
  stage('上传dockerhub仓库'){
        steps {
            withCredentials([usernamePassword(credentialsId: 'a98622af-1b3d-42bd-8f1b-d732ad3a3e6a', passwordVariable: 'password', usernameVariable: 'username')]) {
   

          sh '''
                docker tag mytest:latest  ${image_name}
                docker push ${image_name}'''
        }
    }
}
    stage('通过publish over ssh 拷贝deploy.yml到k8s-master'){
          steps {
          sshPublisher(publishers: [sshPublisherDesc(configName: '172.31.7.112-k8s-master', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'deploy.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
          }
      }
       stage('更改 yam里的image地址 '){
          steps {
        sh 'ssh [email protected]  sed -i "s#address#${image_name}#g" /tmp/deploy.yml'
          }
      }
      stage('部署到 k8s'){
          steps {
         sh 'ssh [email protected] kubectl apply -f /tmp/deploy.yml'
          }
      }
  }
}

4.2 pipeline SCM方式

前提条件,代码仓库里必须含有Jenkinsfile

12 pipeline 风格发布项目到k8s_第11张图片


jenkins设置如下:

12 pipeline 风格发布项目到k8s_第12张图片

12 pipeline 风格发布项目到k8s_第13张图片

12 pipeline 风格发布项目到k8s_第14张图片

最后保存构建,如下

12 pipeline 风格发布项目到k8s_第15张图片

网页访问测试

12 pipeline 风格发布项目到k8s_第16张图片

你可能感兴趣的:(云原生,kubernetes,容器,云原生)