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代码写入到项目中

钉钉报警

目录
相关文章
|
2月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
8天前
|
Kubernetes 持续交付 Go
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
创建一个基于Go程序的持续集成/持续部署(CI/CD)流水线
|
2月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
49 1
|
2月前
|
Kubernetes jenkins 持续交付
Jenkins 插件生态:提升自动化能力
【8月更文第31天】Jenkins 是一个开源的持续集成/持续交付(CI/CD)平台,广泛应用于软件开发的各个阶段。Jenkins 的一大特色就是其丰富的插件生态系统,这些插件极大地扩展了 Jenkins 的功能,使其能够适应各种各样的应用场景。本文将深入探讨 Jenkins 的插件生态系统,并指导如何选择和配置插件以满足特定需求。
65 1
|
2月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
54 2
|
1月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
53 0
|
2月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
48 0
|
2月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
34 0
|
2月前
|
前端开发 Devops 持续交付
【前端自动化新高度】Angular与Azure DevOps完美结合:从零构建持续集成与持续部署的全自动流水线,提升开发效率与软件交付质量!
【8月更文挑战第31天】Angular作为领先的前端框架,以强大功能和灵活性深受开发者喜爱。Azure DevOps提供一站式DevOps服务,涵盖源码管理、持续集成(CI)及持续部署(CD)。本文将指导你如何在Azure DevOps中搭建Angular项目的CI/CD流程,并通过具体示例代码展示整个过程。首先,我们将创建一个Angular项目并初始化Git仓库;然后,在Azure DevOps中设置CI流水线,定义YAML文件以自动化构建和部署流程。最终实现每次提交代码后自动构建并部署至Azure Web App,极大提升了开发效率和软件交付速度,使团队更专注于创新。
19 0
|
2月前
|
Kubernetes jenkins 持续交付
Jenkins 与 Kubernetes 的集成:实现高效的资源管理和自动化部署
【8月更文第31天】随着微服务架构的普及,Kubernetes 已经成为了容器编排的事实标准。Kubernetes 提供了一种强大的方式来管理容器化的应用程序,而 Jenkins 则是持续集成与持续部署(CI/CD)领域的一个重要工具。将 Jenkins 与 Kubernetes 集成,不仅可以充分利用 Kubernetes 的资源管理能力,还能通过 Jenkins 实现自动化构建、测试和部署,从而提高开发效率和部署速度。本文将详细介绍如何将 Jenkins 集成到 Kubernetes 环境中,并提供具体的代码示例。
96 0
下一篇
无影云桌面