Jenkins pipeline 安装配置

一.环境配置

Linux 环境安装配置(需要先安装配置java 环境)

1.              Jenkins 主节点安装配置

a)       下载Jenkins war 包

访问 https://jenkins.io/download/ 进行下载jenkins 的安装包

b)      安装配置方式说明

1)       直接放在tomcat webapps 目录下,启动tomcat 即可。

2)       命令行启动

                java -DJENKINS_HOME=/tmp -jar jenkins.war --httpPort=8433 --prefix=/dev 

         # JENKIINS_HOME 指定数据存放目录

                # httpPort 指定监听端口

         # prefix 指定访问URI

c)       命令行启动配置

 

1. 新建目录 /opt/j-stg

   mkdir -p /opt/j-stg

               2. 把jenkins.war 包直接复制到/opt/j-stg 目录下

                  cp Jenkins.war /opt/j-stg

                   3. 建立启动脚本

     4. 启动服务

          chmod 755 oper.sh

      ./oper.sh start

d)  浏览器访问访问及初始化

 

1. 查看文件内容 /opt/j-stg/data/secrets/initialAdminPassword 输入到管理员密码字段处

cat /opt/j-stg/data/secrets/initialAdminPassword

2. 输入文件内容后点击继续,选择插件的安装

    等待一段时间后,插件可以自动安装完成,如果安装失败,可以初始完成后在进行安装配置。

3. 创建管理员账号,

4. 进行实例配置

 

 

 

 

 

 

 

5. 初始化完成,点击开始使用Jenkins .

e) 建立凭证信息

点击【凭证】=>【Jenkins】=>【全局凭证】=>【添加凭证】

 

        注: 1. 类型可以根据实际进行选择,这里选择用户/密码验证类型

          2. 范围可以选择 全局类型 和 系统类型

                 3.  username/password 需要记住,在增加slave 节点时候进行验证

                 

 

(2)  Slave 从节点配置(linux节点配置说明)

                  进入【系统管理】=>【管理节点】=>【新建节点】=>【输入节点名称,选择固定节点】

               

           【点击ok】=>【出现如下界面进行设置】=>【点击保存】

【点击节点列表】=>【出现如下界面,对节点进行查看】

 

 

二.Jenkins master全局配置:

1. 系统设置

【点击 系统管理】=>【系统设置】

a)       管理监控配置

b)      设置邮件发送账号配置

    

c)       设置邮件通知

d)      ant 服务配置

e)       SonarQube 服务配置

 

 

f)        Xcode Builder 配置

2. 全局工具配置

       【系统管理】=>【全局工具配置】

a)       Jdk 配置设置

1. 指定版本自动安装

2. 在构建节点手动安装后,进行手动设置

3.在手动设置完JDK,后可以对每个节点进行自定义配置

 

b)      Maven 配置

 

        c) SonarQube 扫描器安装配置

         

三. 构建任务配置

     1. 构建任务

a)       点击【新建任务】

b)       

c)       Jenkins pipeline 脚本范例

pipeline {

    // 设置编译节点选择

    agent { label '192.168.8.106'}

    // 设置脚本全局变量

    environment {

            r_ftp_user='jenkins_read'

            r_ftp_passwd='testp’'

            w_ftp_user='jenkins'

            w_ftp_passwd='p_aaa '

           

            ftp="10.200.130.19/jenkins_test"

            zipfile="${JOB_NAME}.zip"

           

            sonar = tool 'sonar1';

            tomcat='/opt/app/tomcat-8'

    }  

    tools {maven 'maven3'

           jdk 'jdk1'

    }

    // 具体pipeline 执行步骤配置

    stages {

        //  检出代码配置

        stage('checkout code '){

                steps {

                  git branch: 'dev', credentialsId: '678b2319-7345-4d3e-8738-b6ac7bf32d1d', url: 'git@gitlab/api.git'

                }

            }

         // 编译 和 SonarQube 检查

        stage('Build && SonarQube analysis') {

            steps {

                 sh """

                    mvn clean install -Dmaven.test.skip=true

                    rm -rf *.zip

                    cd target

                    zip -qry ../$zipfile api-1.0/*

                    cd ..

                """

               

                withSonarQubeEnv('SonarQube7.3') {

                    sh "$sonar/bin/sonar-scanner -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.projectKey=$env.JOB_NAME -Dsonar.projectName=$env.JOB_NAME -Dsonar.projectVersion=1.0 -Dsonar.sources=src -Dsonar.java.binaries=target/classes"

                    }

                }

            }

        // 编译产出文件上传ftp  和对本任务其他阶段节点共享配置

        stage('上传ftp zipfile'){

            steps {

              

               sh "lftp -c 'open ${w_ftp_user}:${w_ftp_passwd}@$ftp && mkdir -p ${JOB_NAME}/$BUILD_NUMBER && cd  ${JOB_NAME}/$BUILD_NUMBER && put $zipfile'"

               stash includes: "$zipfile", name: "$zipfile"

            }

        }

        //实际部署阶段

        stage('deploycode'){

            // 并发配置设置

            parallel {

                stage("server105"){

                    // 节点选择

                    agent { label "192.168.8.105"}

                    // 在选择节点部署代码

                    steps{

                        unstash "$zipfile"

                        sh """

                        sudo su -c 'cd $tomcat/bin/ &&./shutdown.sh;

                                    cd ../webapps && rm -rf ./*;

                                    mv $WORKSPACE/$zipfile .;

                                    unzip $zipfile;

                                    cd ..;

                                    ./bin/catalina.sh start'

                       

                        """

                      }

                }

                stage("server107"){

                    // 节点选择

                    agent { label '192.168.8.107'}

                    

                    steps {

                        unstash "$zipfile"

                        sh """

                        sudo su -c 'cd $tomcat/bin/ &&./shutdown.sh;

                                    cd ../webapps && rm -rf ./*;

                                    mv $WORKSPACE/$zipfile .;

                                    unzip $zipfile;

                                    cd ..;

                                    ./bin/catalina.sh start'

                        """

                    }

                }

            }

        }

    }

    // 部署结果处理阶段

    post{

        // 部署结果成功后执行阶段

        success {

            sleep 10   

            script {

                  def node = ['192.168.8.105','192.168.8.107']

                  def rvnode = []

                

                  for (int i=0; i<node.size(); i++){

                     aa = sh returnStatus: true, script:"""

                             curl -I http://${node[i]}:8080 ;

                         """

                     sh "echo rvcode= $aa"    

                     if ( aa == 0 ) {

                         rvnode.add(node[i])

                     }

                  }

              

                def rvstr = '' 

                if (rvnode != []){

                    for (int i=0;i< rvnode.size();i++){

                         rvstr+='http://' + rvnode[i] + ':8080<br />'

                    } 

                } else {

                    rvstr = '服务器启动失败'

                } 

                def body = """

                #  \${JELLY_SCRIPT,template="html"} <br/>

            #  \${BUILD_URL}console <br/>

            #  访问路径:

            $rvstr

               

                """

                emailext body: body, subject: '$JOB_NAME', to: '[email protected]'

            } 

        } 

        // 部署失败后执行阶段

        failure {

            emailext body: '''

        #  ${JELLY_SCRIPT,template="html"} <br/>

        #  ${BUILD_URL}console <br/>

        ''', subject: '${JOB_NAME}_Build_error', to: '[email protected]'

      

        }

       

    }

}

       d) 触发模式

         1. 手动触发构建

         2. 定时触发构建

                

         3. webhook触发构建

四. SonarQube Server 服务配置

1. SonarQube安装

# 下载地址:

# wget –o /usr/local/src/https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-7.3.zip

# cd /usr/local/src && unzip sonarqube-7.3.zip

# mv sonarqube-7.3.zip /opt/app/sonarqube

# useradd sonar

# cd /opt/app/sonarqube

# cat conf/sonar.properties                   # 配置文件更具需要进行更改

# su sonar

# cd bin/linux-x86-64/

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# rpm -ivh mysql-community-release-el7-5.noarch.rpm

# yum -y install mysql mysql-server mysql-devel

# systemctl  enable mysqld

# systemctl  start mysqld

# db 初始化

> create database sonar character set utf8 collate utf8_general_ci;

> grant all privileges on sonar.* to 'sonar'@'192.168.8.%' identified by 'sonar‘;

> flush privileges;

 

2. 服务配置及启动

 [root@centos73-106 conf]# cat sonar.properties | grep ^[a-z]

sonar.jdbc.username=sonar

sonar.jdbc.password=sonar

sonar.login=admin

sonar.password=admin

sonar.jdbc.url=jdbc:mysql://192.168.8.108:3306/sonar?useUnicode=true&characterEncoding=utf8 \

                       &rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

sonar.web.javaOpts=-Xmx512m –Xms512m -XX:+HeapDumpOnOutOfMemoryError

sonar.web.host=0.0.0.0

sonar.web.port=9000

sonar.web.http.maxThreads=50

sonar.web.http.minThreads=5

# useradd sonar

# cd /opt/app/sonarqube

# chown –R sonar.sonar /opt/app/sonarqube

# su soner

$ ./sonar.sh  start                  # 使用普通用户 启动sonar server 服务

 

3. SonarQube 使用设置

       a) 设置中文

 

b) 设置令牌Token

[配置] => [权限] => [点击令牌] => 生成令牌

 

4. 扫描测试:

   ./bin/sonar-scanner -Dsonar.host.url=http://192.168.8.106:9000 

-Dsonar.projectKey=test -Dsonar.projectName=test

-Dsonar.projectVersion=1.0 -Dsonar.sources=src

-Dsonar.java.binaries=target/classes

-Dsonar.login=SONAR_AUTH_TOKEN

 

# Jenkisn pipeline sonar scan 常用参数

 -Dsonar.host.url=$SONAR_HOST_URL

 -Dsonar.login=$SONAR_AUTH_TOKEN

 

 

 

 

 

 


猜你喜欢

转载自blog.51cto.com/5766902/2286699
今日推荐