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

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章