首页 > 其他分享 >12 pipeline 风格发布项目到k8s

12 pipeline 风格发布项目到k8s

时间:2023-02-21 10:55:06浏览次数:46  
标签:pipeline 12 false steps k8s yml stage

书接上回: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 [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
image
jenkins设置如下:
image

image

image

最后保存构建,如下
image

网页访问测试
image

标签:pipeline,12,false,steps,k8s,yml,stage
From: https://www.cnblogs.com/huningfei/p/17140156.html

相关文章

  • 11 使用自由风格发布k8s项目
    一背景说明新版的jenkins由于一些k8s插件发现没了,没法使用之前的方法发布了,这次不使用任何插件,直接使用自由风格发布。jenkins是使用docker启动的,k8s环境是基于1.23版本......
  • [51Nod 1222] - 最小公倍数计数 (..怎么说 枚举题?)
    题面题目分析令则此处表示小于等于中,满足两个数互质且乘积为的无序数对的个数,显然其中表示d的质因子个数相当于把d的质因数分成两部分,所以就每个质因数选或不选,又因为......
  • [51Nod 1227] 平均最小公倍数 (杜教筛)
    题目描述求题目分析这道题其实是​​[51Nod1238]最小公倍数之和题解​​的简化版,或者说是本质…就直接上公式了令,则此处有一个常识证明如下当时,若,所以与互质的......
  • [51Nod 1237] 最大公约数之和 (杜教筛+莫比乌斯反演)
    题目描述求题目分析乍一看十分像裸莫比乌斯反演,然而的范围让人望而却步于是先变化一下式子枚举令k=Td则此时可以整除分块优化,每次算出相等的上下界后用莫比乌斯反演计......
  • K8S故障排查
    故障排查//查看Pod事件kubectldescribeTYPENAME_PREFIX//查看Pod日志(Failed状态下)kubectllogs<POD_NAME>[-cContainer_NAME]//进入Pod(状态为running,但是服......
  • K8SYaml文件详解(云原生)
    一、K8S支持的文件格式kubernetes支持YAML和JSON文件格式管理资源对象。JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内......
  • K8S-namespace 六大类型
    一、namespace六大类型•Mount(mnt):隔离文件系统挂载点,该namespace有自己的挂载信息,即拥有独立的目录层次总结:提供磁盘挂载点和文件系统的隔离能力•UTS:隔离主机名......
  • JDK卸载与JDK12 安装
    JDK卸载与JDK12安装一、JDK卸载控制面板》程序和功能》jdk程序(java8update391;javaSEDevelopmentKit8update391)》卸载注册表》HKEY_LOCAL_MACHINE》SOFTWARE》......
  • K8S-二进制安装
    一.部署二进制概述使用Kubernetes(k8s)二进制安装的优点包括:可以使用最新版本:当你使用二进制安装时,你可以选择使用最新版本的k8s。这使你能够使用最新的功能,同时避免了某......
  • K8S-kubeadm部署
    一.部署环境master(2C/4G,cpu核心数要求大于2)192.168.61.100docker、kubeadm、kubelet、kubectl、flannelnode01(2C/2G)192.16......