运维技术分享平台

 找回密码
 立即注册
首页
查看: 784|回复: 0

jenkins Pipline 庖丁解牛 (二.项目实战)

[复制链接]

8

主题

9

帖子

75

积分

注册会员

Rank: 2

积分
75
发表于 2020-4-15 11:42:32 | 显示全部楼层 |阅读模式
本帖最后由 eagle 于 2020-4-15 11:51 编辑

一.项目实战1.Pipeline Maven Integration Plugin 构建java 项目

1.安装插件
2.设置java 环境变量
全局工具设置
设置maven

3.设置系统变量
系统设置
## jdk 环境变量 ##
#set java JDK
export JAVA_HOME=/usr/local/jdk1.8.0_221/
export JRE_HOME=/usr/local/jdk1.8.0_221/jre
export PATH=$JAVA_HOME/binJRE_HOME/binPATH
export CLASSPATH=$JAVA_HOME/lib/tools.jarJAVA_HOME/lib/dt.jar


4. 创建pipline job
pipeline {
        agent any
        tools {
                                maven 'maven-3'    //这里是全局工具配置的名字,要对应
        }
    stages {
        stage('拉取代码') {
            steps {
                git url: 'https://gitee.com/tridents_1/blog.git'
            }
        }
        stage('maven 构建') {
            steps {
                                          sh "mvn  clean package  -DskipTests"

            }
        }

    }
}


#这里有个要注意的地方,如果使用自己的私库,要指定一下settings.xml 文件
sh "mvn  clean package  -DskipTests"
替换为:
                                    withMaven(
                                            maven: 'maven-3',
                                            globalMavenSettingsFilePath: '/data/services/maven/conf/settings.xml',
                                            mavenSettingsFilePath: '/data/services/maven/conf/settings.xml' ) {
                                              sh "mvn  clean package  -DskipTests"
                                    }

2.NodeJS Plugin 构建NodeJS项目1.安装插件
插件名称:         NodeJS Plugin
2.设置Nodejs 版本
全局工具设置
3.创建pipline job
pipeline {
    agent any
    tools {
                nodejs "nodejs"     //这里是全局工具配置的名字,要对应
    }
    stages {
        stage('NodeJS 构建') {
            steps {
                                        sh 'node --version'
                                        sh 'npm --version'
            }
        }

    }
}

第一次运行会,自动安装nodejs
下一次运行,会打印出node 版本,npm 版本



4.项目构建
pipeline {
    agent any
    tools {
                nodejs "nodejs"     //这里是全局工具配置的名字,要对应
    }
    stages {
        stage('拉取代码') {
            steps {
                    git url: 'https://gitee.com/tridents_1/vueAdmin-template.git'
            }
        }
        stage('NodeJS 构建') {
            steps {
                                        sh 'node --version'
                                        sh 'npm --version'
                                        sh 'npm install --registry=https://registry.npm.taobao.org'
                                        sh 'npm run dev'
            }
        }

    }
}
构建结果



3.分享一个多语言构建的Pipeline 小栗子
pipeline {
    agent  any
    tools {
            maven 'maven-3'      
            nodejs 'nodejs'      
     }
     stages {
        stage('克隆代码') {
            steps {   
                sh 'echo "service_name": $service_name , "Git_Address:" $git_address ,  "Branche_name:" $branche  "namespace:" $namespace ,"build_package_type:" $build_package_type, "build_uuid:" $build_uuid  "ID:" $ID'                        
                dir("${env.WORKSPACE}/$build_uuid") {   
                   git  branch: '$branche',  credentialsId: 'c7dcd831-8e1c-474f-852b-ee5f04e7ec3f', url: '$git_address'
                }
            }
        }

        stage('JAVA镜像构建') {
                   when {
                environment name: 'build_package_type', value: '1'

            }
                        steps {
                dir("${env.WORKSPACE}/$build_uuid") {
                    sh  'echo JAVA镜像构建'  
                                        sh  'echo JAVA拉取配置'                                         
                    sh  '/data/scripts/pipeline_scripts/curl_configure.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       
                                        sh  'echo JAVA maven构建'
                                    withMaven(
                                            maven: 'maven-3',
                                            globalMavenSettingsFilePath: '/data/services/maven/conf/settings.xml',
                                            mavenSettingsFilePath: '/data/services/maven/conf/settings.xml' ) {
                                              sh "mvn  clean package  -DskipTests"
                                       }
                                        sh  'echo JAVA 镜像构建'
                                        sh  '/data/scripts/pipeline_scripts/java_image_build.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       

                }   
            }
        }

        stage('NodeJS镜像构建') {
                   when {
                environment name: 'build_package_type', value: '2'

            }
            steps {
                dir("${env.WORKSPACE}/$build_uuid") {
                    sh  'echo Node镜像构建'  
                                        sh  'echo Node拉取配置'            
                    sh  '/data/scripts/pipeline_scripts/curl_configure.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       
                                        sh  'echo NodeJS构建'
                                        sh 'npm install --registry=--registry=https://registry.npm.taobao.org'
                                        sh  'npm run build:dev'
                                        sh  'echo NodeJS镜像构建'
                                        sh  '/data/scripts/pipeline_scripts/node_image_build.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       
                }   
            }
        }               

        stage('PHP镜像构建') {
                   when {
                environment name: 'build_package_type', value: '3'

            }
            steps {
                dir("${env.WORKSPACE}/$build_uuid") {
                    sh  'echo PHP镜像构建'  
                                        sh  'echo PHP拉取配置'            
                    sh  '/data/scripts/pipeline_scripts/curl_configure.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       
                                        sh  'echo PHP镜像构建'
                                        sh  '/data/scripts/pipeline_scripts/php_image_build.sh "${WORKSPACE}/${build_uuid}"  $service_name $branche   $ID $namespace   $build_package_type ${build_uuid}'                                       
                  }              

              }            

         }

                stage("删除工作目录") {
                        steps{
                                script{
                                        deleteDir()  // 删除工作目录
                                }
                        }
                }



    }
}


4.jenkins 钉钉告警1.安装插件
2. 创建添加post 部分
        post {
                success {
                        dingTalk accessToken:'你的钉钉webhook,完整的webhook即可',
                        imageUrl:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1568176996966&di=23d1b0bbec5e74070c4a0cff021a7ff4&imgtype=0&src=http%3A%2F%2Fimglf2.ph.126.net%2Fo-A4B-jUEv4florGNvU0jA%3D%3D%2F2650931330678950034.png',
                        jenkinsUrl:'jenkins地址/',
                        message: "\n服务名称: $service_name \n分支: $branche \n构建类型: $build_package_type \n随机ID: $build_uuid \n环境ID: $ID \n构建结果: 构建成功",
                        notifyPeople:''
                          }
                failure {
                        dingTalk accessToken:'你的钉钉webhook,完整的webhook即可',
                        imageUrl:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2523915507,2341968742&fm=26&gp=0.jpg',
                        jenkinsUrl:'jenkins地址/',
                        message: "\n服务名称: $service_name \n分支: $branche \n构建类型: $build_package_type \n随机ID: $build_uuid \n环境ID: $ID \n构建结果: 构建失败",
                        notifyPeople:''
                          }
                        }

3.告警结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

首页

手机版|关于自己|运维技术分享平台

GMT+8, 2024-12-22 13:11 , Processed in 0.081730 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表