• pipeline拉取代码-maven打包-sonar代码质量检测


    企业微信-配置Jenkins-安装插件-在插件管理中,安装插件Qy Wechat Notification ,安装后重启jenkins

    英文界面安装插件 Manage Jenkins–Manage Plugins-Available搜索插件
    Locale
    Localization
    Git Parameter
    Publish Over SSH
    Qy Wechat Notification
    SonarQube Scanner

    1,项目添加tag
    Dashboard-pipeline-General-参数化构建过程-Git参数-名称(tag)-描述(代码的版本标签)——默认值(origin/master)-应用-保存

    2.拉取git仓库代码
    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(checkout:Check out from version control)

    Repository URL

    http://192.168.1.6:8929/root/pipeline.git

    点击-生成流水线脚本

    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.6:8929/root/pipeline.git']]])
    
    • 1

    回到git仓库修改Jenkinsfile,并保存

    //*/master 是默认拉取最新的代码, 我们自定义了tag版本,这里需要引入$tag
        stages {
            stage('拉取git仓库代码') {
                steps {
                    checkout([$class: 'GitSCM', branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.1.6:8929/root/pipeline.git']]])
                }
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.maven构建包
    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script)

    Shell Script

    /var/jenkins_home/maven/bin/mvn clean package -DskipTests
    
    • 1

    生成流水线脚本

    sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
    
    • 1

    4.通过sonarQube做代码质量检测

    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script) -生成后的流水线脚本添加至git仓库修改Jenkinsfile

    #源码位置 -Dsonar.source=./
    #项目名称 -Dsonar.projectname
    #项目的标识 -Dsonar.projectKey
    #编译后的目录 -Dsonar.java.binaries
    #秘钥 -Dsonar.login

    Shell Script

    /var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=c5f80db608830252de0b368c9aaecc3a8d95463f
    
    • 1

    生成流水线脚本

    sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=c5f80db608830252de0b368c9aaecc3a8d95463f'
    
    • 1

    5.通过docker制作自定义镜像

    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sh:Shell Script) -生成后的流水线脚本添加至git仓库修改Jenkinsfile

    Shell Script

    mv ./target/*.jar ./docker/
    docker build -t ${JOB_NAME}:${tag} ./docker/
    
    • 1
    • 2

    生成流水线脚本

    sh '''mv ./target/*.jar ./docker/
    docker build -t ${JOB_NAME}:${tag} ./docker/'''
    
    • 1
    • 2

    6.将自定义镜像推送到Harbor

    git仓库-修改Jenkinsfile

        //声明全局变量,方便后面使用
        environment {
    	    harboUser = 'admin'
            harborPass = 'Harbor12345'
            harborAddress = '192.168.1.6:80'
            harborRepo = 'repo'
    	}
    
    
    		stage('将自定义镜像推送到Harbor') {
                steps {
                    sh '''docker login -u ${harboUser} -p ${harborPass} ${harborAddress}
    docker tag ${JOB_NAME}:${tag} ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}
    docker push ${harborAddress}/${harborRepo}/${JOB_NAME}:${tag}'''
                }			
            }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    7.通过 Publish Over SSH通知目标服务器

    pipeline-参数化构建过程-添加参数-字符参数

    container_port 8080 容器内部占用端口
    host_prot 8081 宿主机映射端口

    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(sshPublisher:Send build artifacts over SSH) -生成后的流水线脚本添加至git仓库修改Jenkinsfile

    Exec command

    deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot
    
    • 1

    生成流水线脚本

    sshPublisher(publishers: [sshPublisherDesc(configName: 'test', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
    
    • 1

    流水线脚本中的一个坑,这里的’’ 不会引用Jenkinsfile文件中的变量,
    ‘deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot’

    需要换成""
    “deploy.sh $harborAddress $harborRepo $JOB_NAME $tag $container_port $host_prot”

    8.设置企业微信

    打开企业微信手机端,在群设置的群机器人中,添加机器人
    添加成功后,复制Webhook地址,在配置Jenkins时使用

    编辑项目pipeline-流水线-流水线语法-片段生成器-示例步骤(qyWechatNotification:企业微信通知) -生成后的流水线脚本添加至git仓库修改Jenkinsfile

  • 相关阅读:
    sql:SQL优化知识点记录(十五)
    精品基于NET实现的数码新闻发布系统
    组件设计思想
    2023年深圳等保测评机构名称以及地址汇总
    OS2.3.2:进程互斥的软件实现方法
    云原生时代崛起的编程语言Go基础实战
    Linux下的buff/cache
    TCP IP网络编程(三) 地址族与数据序列
    npm设置淘宝镜像地址
    Anaconda - 操作系统安装程序 简要介绍
  • 原文地址:https://blog.csdn.net/qq_35583325/article/details/126379373