• jenkins安装和部署


    jenkins安装尽量不要用Docker来安装,不然会有很多坑,用我下面的方法去安装

    JDK

    yum install java-1.8.0-openjdk* -y
    
    • 1

    安装目录:

    /usr/lib/jvm

    yum  -y install epel-release
    yum -y install daemonize
    
    • 1
    • 2

    安装jenkins

    镜像

    https://mirrors.aliyun.com/jenkins/redhat-stable/?spm=a2c6h.25603864.0.0.5103166aqfIgQr

    rpm -ivh jenkins-2.319.1-1.1.noarch.rpm
    
    • 1
    #修改 
    vi /etc/sysconfig/jenkins
    JENKINS_USER="root"
    JENKINS_PORT="8888"
    
    #重启
    systemctl start jenkins
    systemctl enable jenkins
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    访问接口

    http://192.168.182.130:8888/

    #修改镜像源

    cd /var/lib/jenkins/updates
    
    sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
    
    
    • 1
    • 2
    • 3
    • 4

    Global Tool Configuration配置

    查询java和maven环境

    cat /etc/profile
    末尾如下配置:
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export MAVEN_HOME=/usr/share/maven
    export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5

    根据环境配置git、maven、jdk

    Configure System配置

    找到 < 全局属性>

    JAVA_HOME

    /usr/lib/jvm/java-1.8.0-openjdk

    M2_HOME

    /usr/share/maven

    PATH+EXTRA

    $M2_HOME/bin

    构建流水线项目(pipline)教程和模板

    去插件中心插件安装 pipeline

    使用pipeline script 构建流水

    模板

    pipeline {
        agent any
    
        stages {
            stage('pull code') {
                steps {
                    echo 'pull code'
                }
            }
             stage('build project') {
                steps {
                    echo 'build project'
                }
            }
             stage('publish code') {
                steps {
                    echo 'publish code'
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    第一步、打开流水线语法

    使用片段生成器生成流水线脚本,

    拉取代码

    选择checkout: Check out from version controll =>设置git仓库地址和 Credentials=>生成流水线脚本===>
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee-auth-password', url: 'https://gitee.com/xxxx/xxxx.git']]])===>放到steps中如下:

    pipeline {
        agent any
    
        stages {
            stage('pull code') {
                 steps {
                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee-auth-password', url: ''https://gitee.com/xxxx/xxxx.git']]])
                }
            }
             stage('build project') {
                steps {
                    echo 'build project'
                }
            }
             stage('publish code') {
                steps {
                    echo 'publish code'
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    构建项目

    同理选择 sh: Shell Script===>输入打包命令 mvn clean package -Dmaven.test.skip=true===>执行得到流水线脚本 sh ‘mvn clean package -Dmaven.test.skip=true’

    pipeline {
        agent any
    
        stages {
            stage('pull code') {
                 steps {
                    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitee-auth-password', url: ''https://gitee.com/xxxx/xxxx.git']]])
                }
            }
             stage('bulid code') {
                steps {
                    echo 'bulid code'
                }
            }
            stage('build project') {
                steps {
                    sh 'mvn clean package -Dmaven.test.skip=true'
                }
            }
            stage('publish code') {
                steps {
                    echo 'publish code'
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    项目部署

    stage('deploy demo'){
        steps{
            sh '''#!/bin/bash
    
            echo \'build start demo!\'
            #切换到要部署的微服务目录下,jenkins执行时,默认在workspace下的当前总工程下操作脚本
            cd ./demo
            #微服务起个名字(起个镜像名字)
            service_name="demo"
            #exposure port
            service_port=20000
            #app version
            service_version="v0.0.1"
    
            #查看容器id
            CID=$(docker ps -a | grep "$service_name" | awk \'{print $1}\')
            echo "CID $CID"
            if [ -n "$CID" ]
            then
                echo "exist $service_name container,CID=$CID"
                #停止
                docker stop $CID
                #删除容器
                docker rm $CID
            else
                echo "no exist $SERVER_NAME container"
            fi
    
            #查看镜像id,并且输出第3列,赋值给IID
            IID=$(docker images | grep "$service_name" | awk \'{print $3}\')
            echo "IID $IID"
            if [ -n "$IID" ]
            then
                echo "exist $SERVER_NAME image,IID=$IID"
                #删除镜像
                docker rmi -f $IID
                echo "delete $SERVER_NAME image"
                #构建
                docker build -t $service_name:$service_version .
                echo "build $SERVER_NAME image"
            else
                echo "no exist $SERVER_NAME image,build docker"
                #构建
                docker build -t $service_name:$service_version .
                echo "build $SERVER_NAME image"
            fi
    
            #启动
            echo "docker run image=$service_name:$service_version"
            docker run -d --name $service_name -p $service_port:$service_port $service_name:$service_version
            #查看启动日志
            #docker logs -f  $service_name'''
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

      将这个steps 放到里面,每个微服务都一样操作
      stage(‘publish code’) {
      steps {
      echo ‘publish code’
      }
      }

        使用 pipeline script from SCM 方式实现流水

        写好Jenkinsfile后,放到idea项目的根目录下,注意是J是大写的,然后推送到远程仓库
        然后流水线使用 pipeline script from SCM,弃用UI界面的pipeline script 流水方式

        Jenkins代码审查配置SonarQube

        服务器安装SonarQube

        https://blog.csdn.net/weixin_45031570/article/details/127988716?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127988716%22%2C%22source%22%3A%22weixin_45031570%22%7D

        jenkins管理插件下载安装SonarQube

        然后在Global Tool Configuration中安装SonarQube Scanner
        Configure system中配置SonarQube servers,并且吧SonarQube的token写入配置里

      • 相关阅读:
        WPF/C#:在DataGrid中显示选择框
        C#值类型设置为null
        使用python脚本玩转古早TCAD软件(待更新)
        java基于SSM的婚纱影楼管理系统-计算机毕业设计
        需要影视解说配音的看过来,用它就对了
        C语言类型占内存大小
        Red Hat Enterprise Linux RHEL 8.6 下载安装
        Iterator设计模式
        高中数学:三角恒等变换-两角和与差的变形公式
        【Java 进阶篇】JDBC 数据库连接池详解
      • 原文地址:https://blog.csdn.net/weixin_45031570/article/details/127961848