Jenkins集成pipline流水线实现自动化上线(十五)

简介: 1.老项目改造实现pipline项目自动上线1.1.通过jenkins获取流水线语法1.1.1.获取从gitlab上拉取项目的语法拉取gitlab上的代码可以通过jenkins获取流水线语法最后粘贴到脚本中点击配置—高级项目选项—流水线—流水线语法

1.老项目改造实现pipline项目自动上线

1.1.通过jenkins获取流水线语法

1.1.1.获取从gitlab上拉取项目的语法

拉取gitlab上的代码可以通过jenkins获取流水线语法最后粘贴到脚本中

点击配置—高级项目选项—流水线—流水线语法

配置拉取代码的信息

点击生成流水线脚本

1.1.2.获取钉钉报警语法

1.2.使用git parameters参数构建

参数化构建使用blue ocean会报错,会提示不支持,但是不影响构建

2.编写pipeline脚本

pipeline{
  agent any
  stages {  
    stage('获取代码') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
      }
    }
    stage('质量扫描'){
      steps {
          sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
      }
    }
    stage('编译代码'){
      steps {
        echo "build code ok"
        //sh 'mvn package'
      }
    }
    stage('部署代码'){
      steps {
        sh 'sh -x /script/monitor_deploy_tag.sh'
      }
    }
  }
}

添加一个Git parameters参数化构建

3.将代码填写到项目中

4.构建选择标签即可

每一步都可以看到日志

5.使用pipeline语法中的parameters语法构建

利用pipeline语法中的parameters语法构建的话,需要将之前添加的git parameters参数删除,并且使用blue ocean去构建

5.1.脚本编写

pipeline{
  agent any
  parameters {
        string(name: 'git_version', defaultValue: 'v1.0', description: '输入tag版本')
    }
  stages {  //一个大的任务合集  (部署代码)
    stage('获取代码') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
      }
    }
    stage('质量扫描'){
      steps {
          sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
      }
    }
    stage('编译代码'){
      steps {
        echo "build code ok"
        //sh 'mvn package'
      }
    }
    stage('部署代码'){
      steps {
        sh 'sh -x /script/monitor_deploy_tag.sh'
      }
    }
  }
}

5.2.将代码粘贴到项目中

5.3.利用blue ocean去构建

普通构建也可以的,建议使用blue ocean去构建

打开blue ocean—点击运行—填写版本即可

运行中,每一个阶段都看得清清楚楚,还会有日志输出

部署成功

5.4.项目构建后显示sonarqube图标

我们在构建过程中使用到了sonarqube,但是我们也希望能看到sonarqube的图标并且点击图标即可跳转至sonarqube

在sonarqube质量检测目录前加上withsonarqubeenv一行即可,括号中的值要与系统设置sonarqube服务端的名称
withSonarQubeEnv('SonarQube') {
    sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
}
括号中的值也就是下图中的值,sonarqube服务端的名称

完整脚本

pipeline{
  agent any
  parameters {
        string(name: 'git_version', defaultValue: 'v1.0', description: '输入tag版本')
    }
  stages {  //一个大的任务合集  (部署代码)
    stage('获取代码') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
      }
    }
    stage('质量扫描'){
      steps {
        withSonarQubeEnv('sonarqube') {       #主要加了这里
          sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
        }
      }
    }
    stage('编译代码'){
      steps {
        echo "build code ok"
        //sh 'mvn package'
      }
    }
    stage('部署代码'){
      steps {
        sh 'sh -x /script/monitor_deploy_tag.sh'
      }
    }
  }
}

构建成功后查看是有sonarqube图标

5.5.支持钉钉短信报警

首先获取到钉钉token值
https://oapi.dingtalk.com/robot/send?access_token=01a9beb62a838673d7c461a4ecc5e70c11b45c2ed46d67f6cfc08dcceef891e3

本次钉钉报警只增加这些即可,将token值换掉
post {  //stages所有任务执行后触发post
        failure {   //构建失败通知
            dingTalk accessToken: '01a9beb62a838673d7c461a4ecc5e70c11b45c2ed46d67f6cfc08dcceef891e3', imageUrl: '', jenkinsUrl: 'http://192.168.81.220:8080', message: '部署失败', notifyPeople: ''
        } 
        success {   //构建成功通知
            dingTalk accessToken: '01a9beb62a838673d7c461a4ecc5e70c11b45c2ed46d67f6cfc08dcceef891e3', imageUrl: '', jenkinsUrl: 'http://192.168.81.220:8080', message: '部署成功', notifyPeople: ''
        }
}

完整脚本

pipeline{
  agent any
  parameters {
        string(name: 'git_version', defaultValue: 'v1.0', description: '输入tag版本')
    }
  stages {  //一个大的任务合集  (部署代码)
    stage('获取代码') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9847113e-e313-4dc6-9302-dc4dec14804b', url: 'git@gitlab.jiangxl.com:root/monitor.git']]])
      }
    }
    stage('质量扫描'){
      steps {
        withSonarQubeEnv('sonarqube') {
          sh '/usr/local/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=.'
        }
      }
    }
    stage('编译代码'){
      steps {
        echo "build code ok"
        //sh 'mvn package'
      }
    }
    stage('部署代码'){
      steps {
        sh 'sh -x /script/monitor_deploy_tag.sh'
      }
    }
  }
  post {  //stages所有任务执行后触发post
        failure {   //构建失败通知
            dingTalk accessToken: '01a9beb62a838673d7c461a4ecc5e70c11b45c2ed46d67f6cfc08dcceef891e3', imageUrl: '', jenkinsUrl: 'http://192.168.81.220:8080', message: '部署失败', notifyPeople: ''
        } 
        success {   //构建成功通知
            dingTalk accessToken: '01a9beb62a838673d7c461a4ecc5e70c11b45c2ed46d67f6cfc08dcceef891e3', imageUrl: '', jenkinsUrl: 'http://192.168.81.220:8080', message: '部署成功', notifyPeople: ''
        }
    } 
}

将pipeline代码写入到项目中

钉钉报警

目录
相关文章
|
API
xxl-job restful api
xxl-job restful api
395 0
|
Nacos
nacos日志
"服务下线,在nacos看哪个日志文件的 ? alipay-jraft.log config-memory.log config-trace.log nacos.log naming-raft.log remote-digest.log tps-control.log cmdb-main.log config-notify.log core-auth.log naming-distro.log naming-rt.log remote-push.log config-client-request.log config-pull-check.log istio-main.log naming-e
613 1
|
jenkins 持续交付 开发工具
Jenkins-pipline流水线语法介绍并结合Blue Ocean查看流水线(十四)
jenkins集成pipeline流水线 1.pipeline概述 pipeline流水线,可以直观的展示每个阶段做的任务,以及每个阶段耗费的时间。 pipeline不在使用鼠标来实现自动构建,也不要去看控制台日志,而是全程使用代码的方式来实现,构建完成后会展示一个视图,用来展示每个阶段完成的情况
613 0
Jenkins-pipline流水线语法介绍并结合Blue Ocean查看流水线(十四)
|
5月前
|
安全 Linux
安装EPEL Repository Centos 7.9
记住,行走在Linux的世界,把“学习”作为你不可或缺的随身宝典。今天你学会了如何将EPEL这座外来的宝库接入你的系统,明天,你或许就能在这座宝库中发现一款能领你走向Linux大师之路的神器。
286 5
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
575 4
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
缓存 NoSQL 安全
玩转Redis!非常强大的Redisson分布式集合,少写60%代码
Redisson是Java的Redis客户端,提供实时数据平台服务,简化了分布式环境下的数据管理。它包含RList、RSet、RMap等分布式集合,支持ConcurrentMap和Set接口,确保线程安全和数据一致性。例如,RMap实现了本地缓存和监听器功能,允许数据监听和本地加速读取。此外,还提供了RSet的排序和去重功能,以及RQueue和RBlockingQueue等队列实现,支持阻塞操作。通过Redisson,开发者能轻松处理分布式系统的数据同步和操作。
|
JavaScript iOS开发 MacOS
掌握NVM、NRM和NPM:Node.js开发的利器
掌握NVM、NRM和NPM:Node.js开发的利器
448 0
|
关系型数据库 Nacos 数据库
nacos常见问题之集群异常如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
794 5
|
存储 NoSQL Java
redisTemplate.opsForValue() 懂这些就够了
redisTemplate.opsForValue() 懂这些就够了
2179 0
|
测试技术 数据库
深入解析MyBatis-Plus中的逻辑删除功能及实例
深入解析MyBatis-Plus中的逻辑删除功能及实例
1553 0