架构师之路(二)jenkins 配置进阶

1、gitlab 提交代码, 自动触发jenkins 执行任务

架构师之路(二)jenkins 配置进阶_第1张图片

架构师之路(二)jenkins 配置进阶_第2张图片

架构师之路(二)jenkins 配置进阶_第3张图片

然后去gitlab 上配置:

架构师之路(二)jenkins 配置进阶_第4张图片

架构师之路(二)jenkins 配置进阶_第5张图片

架构师之路(二)jenkins 配置进阶_第6张图片

架构师之路(二)jenkins 配置进阶_第7张图片

实现了gitlab 上代码更新,自动执行jenkins 任务。

2、钉钉报警通知

# 群设置---群机器人---自定义---添加

架构师之路(二)jenkins 配置进阶_第8张图片

需要下载钉钉插件,才有这个选项

架构师之路(二)jenkins 配置进阶_第9张图片

架构师之路(二)jenkins 配置进阶_第10张图片

架构师之路(二)jenkins 配置进阶_第11张图片

3、集成sonarqube 代码检测

编译时候的测试, 只测试语法上的问题。

检测代码质量,检测bug、漏洞、重复的代码、代码规范等。

# 安装sonarqube,java平台   依赖mysql5.6版本以上的数据库
  1.环境准备
  [root@sonarqube ~]# systemctl stop firewalld 
  [root@sonarqube ~]# systemctl disable firewalld
  [root@sonarqube ~]# setenforce 0


  2.安装Sonarqube依赖工具
  [root@sonarqube ~]# yum install git java unzip wget -y
  [root@sonarqube ~]# yum localinstall -y mysql-community-*


  3.启动数据库,然后为数据库配置密码。最后创建一个sonar库
  [root@sonarqube ~]# systemctl start mysqld
  [root@sonarqube ~]# mysqladmin password oldxu.com
  [root@sonarqube ~]# mysql -uroot -poldxu.com -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"
  [root@sonarqube ~]# mysql -uroot -poldxu.com -e "show databases;"
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | mysql              |
  | performance_schema |
  | sonar              |
  +--------------------+
  
  4.下载sonarqube,并安装解压至/usr/local
  [root@sonarqube ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.0.zip
  [root@sonarqube ~]# unzip sonarqube-7.0.zip -d /usr/local/
  [root@sonarqube ~]# useradd sonar
  [root@sonarqube ~]# chown -R sonar.sonar /usr/local/sonarqube-7.0/
  [root@sonarqube ~]# ln -s /usr/local/sonarqube-7.0/ /usr/local/sonarqube
  
  5.修改sonarqube连接数据库配置文件
  [root@sonarqube ~]# vim /usr/local/sonarqube/conf/sonar.properties
  sonar.jdbc.username=root
  sonar.jdbc.password=oldxu.com
  sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
  
  6.启动sonarqube服务(由于es必须普通用户启动,所以不能使用root用户,否则启动失败)
  [root@sonarqube ~]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start

sonar 服务器生成令牌:

架构师之路(二)jenkins 配置进阶_第12张图片

2.手动推送代码测试
# sonar-acanner 安装在jenkins 服务器上了
  unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /usr/local/
  ln -s /usr/local/sonar-scanner-4.0.0.1744-linux/ /usr/local/sonar-scanner


  配置sonar-scanner指向sonarqube服务端
  [root@jenkins ~]# cat /usr/local/sonar-scanner/conf/sonar-scanner.properties
  sonar.host.url=http://sonar.oldxu.com:9000
  sonar.login=113234aa9f09aed4bcb11e16092f5bd73d9ccfa7
  #sonar.sourceEncoding=UTF-8
  
  # 或者编辑配置文件,写明sonar 服务器地址, 和sonar的令牌
  [root@jenkins ~]# cat /usr/local/sonar-scanner/conf/sonar-scanner.properties 
#----- Default SonarQube server
sonar.host.url=http://10.0.0.239:9000
sonar.login=xxxx
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
  配置hosts解析
  10.0.0.130  sonar.oldxu.com
  
  进入项目,执行sonar-scanner
  [root@jenkins ~]# /usr/local/sonar-scanner/bin/sonar-scanner \
  -Dsonar.projectKey=monitor \
  -Dsonar.sources=.
3、jenkins集成sonarqube  
插件: SonarQube Scanner
      告诉jenkins:
      服务端是谁:   设置-->系统设置-->SonarQube servers
      客户端路径:   设置-->全局工具配置-->sonarqube scanner

架构师之路(二)jenkins 配置进阶_第13张图片

架构师之路(二)jenkins 配置进阶_第14张图片

架构师之路(二)jenkins 配置进阶_第15张图片

4、jenkins改造项目支持sonarqube质量检测
    sonar.projectName=${JOB_NAME}
    sonar.projectKey=java
    sonar.sources=.
    sonar.java.binaries=target/sonar

架构师之路(二)jenkins 配置进阶_第16张图片

架构师之路(二)jenkins 配置进阶_第17张图片

4、pipeline 流水线

架构师之路(二)jenkins 配置进阶_第18张图片

架构师之路(二)jenkins 配置进阶_第19张图片

架构师之路(二)jenkins 配置进阶_第20张图片

脚本放代码块;点击流水线语法,自动生成pipeline 配置。

架构师之路(二)jenkins 配置进阶_第21张图片

配置好git 的参数,点击生成脚本

架构师之路(二)jenkins 配置进阶_第22张图片

pipeline {
  //agent any
  agent { label 'slave-node1' }
  // pipeline 的参数化构建
  parameters {
        string(name: 'git_version', defaultValue: 'v1.1', description: '填写你要部署的tag版本')
  }
  
  stages {  //自动化部署代码  
    stage('获取代码'){
      steps {
      checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9fe80ab4-656b-41a2-99c8-939390074e4a', url: '[email protected]:root/java.git']]])
      }
    }
    
    stage('质量检测'){
      steps {
        sh '/usr/local/sonar-scanner/bin/sonar-scanner -Dsonar.projectKey=${JOB_NAME} -Dsonar.sources=. -Dsonar.java.binaries=target/sonar'
      }
    }
    stage('代码编译'){
      steps {
        sh 'mvn clean package'
      }
    }
    stage('代码部署'){
      steps {
        sh 'sh -x /scripts/deploy_java_tag.sh'
      }
    }
  }
  
  post {  //stages所有任务执行后触发post
        failure {   //构建失败通知
            dingTalk accessToken: 'fb05be2b283b5cc394174fdba61a65628b18def46a684f4787371b41e137b70f',imageUrl: '', jenkinsUrl: 'http://jenkins.oldxu.com:8080/', message: '代码构建失败', notifyPeople: 'phone'
        }   
        success {   //构建成功通知
            dingTalk accessToken: 'fb05be2b283b5cc394174fdba61a65628b18def46a684f4787371b41e137b70f',imageUrl: '', jenkinsUrl: 'http://jenkins.oldxu.com:8080/', message: '代码构建成功', notifyPeople: 'phone'
        }
    }
}

架构师之路(二)jenkins 配置进阶_第23张图片

架构师之路(二)jenkins 配置进阶_第24张图片

这个插件, 给pipeline 套一个皮肤,更加美观。

5、分布式构建

添加slave 节点

架构师之路(二)jenkins 配置进阶_第25张图片

架构师之路(二)jenkins 配置进阶_第26张图片

以上工具,slave 都要安装,jenkins 服务器推一个远程jar 包过来,slave除了不装jenkins ,其他干活的都要装。

将任务绑定特定的节点,修改pipeline 配置:

架构师之路(二)jenkins 配置进阶_第27张图片

你可能感兴趣的:(jenkins,代码发布)