12 pipeline 风格发布项目到k8s

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

一 背景说明

如果要使用pipeline,前提是代码仓库里面有一个Dockfile的文件,和deploy.yml部署文件
项目地址为:https://gitee.com/huningfei/demo-test
image

二 获取pipeline里面的语法

2.1 git拉取代码-语法

第一种方法:
image
第二种方法:
image

2.2 maven编译-语法

image

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

image
image

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

image

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

三 设置自动构建

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

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

四 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 root@172.31.7.112  sed -i "s#address#${image_name}#g" /tmp/deploy.yml'
          }
      }
      stage('部署到 k8s'){
          steps {
         sh 'ssh root@172.31.7.112 kubectl apply -f /tmp/deploy.yml'
          }
      }
  }
}

4.2 pipeline SCM方式

前提条件,代码仓库里必须含有Jenkinsfile
image
jenkins设置如下:
image

image

image

最后保存构建,如下
image

网页访问测试
image

posted @ 2023-02-21 10:49  huningfei  阅读(62)  评论(0编辑  收藏  举报
levels of contents