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

网友投稿 250 2022-10-24

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

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

jenkins需要安装插件

这个插件也安装一下

开始创建一个项目

接下来我们在看看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/targetREPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}cat >> Dockerfile << EOFFROM tomcat:7RUN mkdir /usr/local/tomcat/webapps/ROOTADD ./solo.war /usr/local/tomcat/webapps/ROOTUSER rootEOFdocker build -t $REPOSITORY .      '''    }    stage('docker push  ') {      echo "docker run"      sh '''      REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}      docker login -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/v1kind: Deploymentmetadata:  name: tomcat-deployment  labels:    app: tomcatspec:  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: v1kind: Servicemetadata:  name: tomcat-service  labels:    app: tomcatspec:  ports:  - port: 8080    targetPort: 8080    nodePort: 31305  selector:    app: tomcat  type: NodePortEOFkubectl 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环境就发布了,其他环境发布也时类似操作,比较方便

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:5G成国内云计算巨头反超国际巨头新跳板?
下一篇:工程师常用的接口盘点
相关文章

 发表评论

暂时没有评论,来抢沙发吧~