k8s配合Jenkins-pipline做多分支构建24

Posted tty之星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s配合Jenkins-pipline做多分支构建24相关的知识,希望对你有一定的参考价值。

在生产中,经常会遇到比如我们一个项目又多个环境,测试,预发,正式等不同的环境,如果一个项目创建一个,会比较麻烦,所以需要用到分支

jenkins需要安装插件

Git Parameter

Blue Ocean

这个插件也安装一下

 

开始创建一个项目

 

接下来我们在看看gitlab的分支内容我们有三个分支,再看看jenkinsfile的内容

 

 

 

完成之后我们通过多分支来探测gitlab的分支自动会拉下来

 

接下来就可以进入不同的分支进行构建了

jenkinsfile内容如下

node(\'haimaxy-jnlp\'){
        stage(\'Clone\') {
        echo "1.Clone Stage"
         checkout scm
     script {
    //获取comment id
        env.imageTag = sh (script: \'git rev-parse --short HEAD ${GIT_COMMIT}\', returnStdout: true).trim()
      }
   }    

    stage(\'build\') {
      echo "2.mvn clean"
      sh "cd /home/jenkins/agent/workspace/bbs/solo-master && mvn clean -Dmaven.test.skip=true  install -s /home/jenkins/settings/settings.xml"
    }
    stage(\'build dockerfile\') {
      echo "3.build dockerfile"
      sh \'\'\'
cd /home/jenkins/agent/workspace/bbs/solo-master/target
REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
cat >> Dockerfile << EOF
FROM tomcat:7
RUN mkdir /usr/local/tomcat/webapps/ROOT
ADD ./solo.war /usr/local/tomcat/webapps/ROOT
USER root
EOF
docker build -t $REPOSITORY .
      \'\'\'
    }
    stage(\'docker push  \') {
      echo "docker run"
      sh \'\'\'
      REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
      docker login http://10.4.7.52 -u admin -p Harbor12345
      docker push $REPOSITORY
      \'\'\'
    }
        stage(\'kubectl apply\'){
          echo "kubectl apply"

        echo "是否需要需要升级?"
     def userInput = input(
            id: \'userInput\',
            message: \'是否需要升级?\',
            parameters: [
              [
                $class: \'ChoiceParameterDefinition\',
                choices: "N\\nY",
                name: \'升级?\'
              ]
            ]
          )
           if (userInput == "Y") {
                      sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
cat >> tomcat.yaml << EOF          
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  labels:
    app: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  minReadySeconds: 5
  strategy:
    rollingUpdate:
    maxSurge: 1
    maxUnavailable: 1
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      containers:
      - name: tomcat
        image: \\$REPOSITORY
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat
spec:
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31305
  selector:
    app: tomcat
  type: NodePort
EOF
kubectl set image deployment/tomcat-deployment tomcat=$REPOSITORY -n kube-ops
          \'\'\'
          }  
    }
stage(\'rollout\') {
    echo "是否需要快速回滚?"
     def userInput = input(
            id: \'userInput\',
            message: \'是否需要快速回滚?\',
            parameters: [
              [
                $class: \'ChoiceParameterDefinition\',
                choices: "N\\nY",
                name: \'回滚?\'
              ]
            ]
          )
           if (userInput == "Y") {
            sh "kubectl rollout undo deployment tomcat-deployment -n kube-ops"
          }
    
     }
}

 

 

接下来我们可以开始构建一下

 

比如进入dev环境

 

都可以使用这里使用blue ocean

 

 

 

这样dev环境就发布了,其他环境发布也时类似操作,比较方便

 

 

以上是关于k8s配合Jenkins-pipline做多分支构建24的主要内容,如果未能解决你的问题,请参考以下文章

gcov 报告的析构函数中的分支是啥?

[k8s]k8s的控制层kubelet+docker配合调度机制(k8架构)

独立jenkins如何跟k8s配合使用20

nginx配置静态资源缓存, 同时配合k8s的SVC(core dns)实现负载均衡

nginx配置静态资源缓存, 同时配合k8s的SVC(core dns)实现负载均衡

使用Jenkins实现重构项目并部署项目到阿里k8s环境运行