快速掌握jenkins核心功能

 

  1. jenkins 概述與環境配置
  2. 基於jenkins 實現可持續化集成
  3. jenkins pipeline 核心應用

一、jenkins 概述與環境配置

知識點:

  1. 關於可持續化集成 (CI)
  2. jenkins 概述
  3. 下載安裝jenkins
  4. 基礎環境配置與常用插件下載

1、關於可持續化集成

相信大家都知道jenkins是用來做可持續集成的? 但部問題是很多人並不明白什麼叫可持續化集成。講概念之前我們先來舉一個場景:

一個團隊正着手開發一個項目,在需求評審之後由小組長把項目拆成了若干個模塊,分給不同的小夥伴去實現。2個星期以後各自模塊的功能都實現了,大家都很開心。這時該合在一起提測了吧。這一合小組長傻眼了,功能沒一個能用的,要麼公共類衝突了,要麼配置衝突....

經過上次的教訓,小組長變聰明瞭,在也不等功能開發之後在合併提測了,而是每天集成提測,如果發現衝突當天就要解決。

 

持續集成即 Continuous integration(CI) 是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘快地發現集成錯誤,讓團隊能夠更高效的開發軟件。

 

 

持續集成要點:

  1. 統一的代碼庫(git)
  2. 統一的依賴包管理(nexus)
  3. 測試自動化
  4. 構建全自動化(maven)
  5. 部署自動化
  6. 可追蹤的集成記錄

2、jenkins 概述

jenkins 就是爲了滿足上述持續集成的要點而設計的一款工具,其主體框架採用JAVA開發,實質內部功能都是由各種插件實現,極大提高了系統的擴展性。其不僅可以滿足JAVA系統的集成,也可以實現PHP等語言的集成發佈。通過其pipeline 插件,用戶可以隨自己需要定製集成流程。

2、下載安裝jenkins

下載:jenkins 支持Docker、yum、msi 等安裝,在這裏推薦大家直接選擇下載他對應的WAR包進行安裝。https://jenkins.io/download/

啓動:下載完成之後直接可通過 jar -jar 命令啓動

java -jar jenkins.war --httpPort=8080

也可以將其放至到servlet容器(tomcat\jetty\jboss)中直接啓動,無需過多的配置,一切插件化這是jenkins 比較優秀的設計。

 

配置:下載完成之後進入啓動頁(http://127.0.0.1:8080/) 會有一個 驗證過程,驗證碼存儲在 ${user_home}\.jenkins\secrets\initialAdminPassword 中,接着就是進入安裝插件頁,選擇默認即可,這個過程稍長。

3、基礎環境配置與常用插件下載

在集成的時候,jenkins 用到了 Maven 、Git  所以服務器中必須提前安裝好這些環境,具體參照前面的git與maven 課程。

 

插件下載

更換源 ->系統管理->管理插件->高級 ->升級站點

把:http://updates.jenkins-ci.org/update-center.json 

換成:http://mirror.esuni.jp/jenkins/updates/update-center.json 

鏡像源查詢:http://mirrors.jenkins-ci.org/status.html

 

基本插件列表

插件名稱

插件描述

Maven Integration

maven 管理插件

Deploy to container

容器部署插件

Pipeline

管道集成插件

Email Extension  

郵件通知插件

SSH

用於ssh 通信

 

 

二、基於jenkins 實現可持續化集成

知識點:

  1. 持續化集成完成的目標
  2. 持續化集成配置
  3. 集成實現原理

 

1、 持續化集成完成的目標

需要到達的目標如下:

  1. 自動基於分支構建項目
  2. 構建好的項目自動部署至Tomcat容器
  3. 構建好的項目自動上傳至Nexus 私服存檔
  4. 保存構建歷史記錄,並可以下載歷史記錄

2、持續化集成配置

  1.  新建maven job

 

  1. 配置checkout 源碼

 

  1.  編寫 maven構建 命令

 

  1.  自動部署至Tomcat配置

添加構建後操作:Deploy war/ear to container 項目

 

自動部署的前提條件:

  1. 需要下載 Deploy to container 插件
  2. 設置Tomcat manager 用戶和密碼,以下配置加入至 Tomcat conf/tomcat-users.xml 中
  3. tomcat webapp  中必須保留 manager 項目

<role rolename="admin-gui"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<user username="manager" password="manager" roles="manager-gui,manager-script"/>

<user username="admin" password="admin" roles="admin-gui,manager-gui"/>

 

  1.  存檔配置

構建後操作添加 Deploy war/ear to a container 項目

 

配置setting.xml 用於獲取上傳至nexus 的權限

vim ~/.m2/settings.xml

# 添加一個 server  id 與 存檔配置當中的repository id 相對應。

 <server>

          <id>nexusReleases</id>

          <username>deployment</username>

          <password>111111</password>

</server>

3、集成實現原理

 

 

三、jenkins pipeline 核心應用

知識點:

  1. pipeline 概要
  2. pipeline 基礎語法
  3. pipeline Demo演示

 

1、pipeline 概要

前面我們演示的 使用maven 來進行自動化構建,其流程分別是:構建環境準備==》源碼下載 ==》構建 ==》存檔 ==》部署。這是一種固化的構建流程,如果你們的需求是多個項目需要進行依賴構建這種複雜的構建場景 時該怎麼辦?jenkins pipeline 可以做到這一點。

   Jenkins從根本上講是一種支持多種自動化模式的自動化引擎。Pipeline在Jenkins上添加了一套強大的自動化工具,支持從簡單的連續集成到全面的連續輸送Pipeline的用例。用戶可以基於他實現更爲複雜的建模場景。

2、pipeline 基礎語法

以下就是一個非常簡單的 pipeline 腳本:

pipeline {

    agent any

    stages {

        stage('Build') {

            steps {

                sh 'make'

            }

        }

        stage('Test'){

            steps {

                sh 'make check'

                junit 'reports/**/*.xml'

            }

        }

        stage('Deploy') {

            steps {

                sh 'make publish'

            }

        }

    }

}

agent  表示Jenkins應該爲Pipeline的這一部分分配一個執行者和工作區。

stage  描述了這條Pipeline的一個階段。

steps  描述了要在其中運行的步驟 stage

sh      執行給定的shell命令

junit   是由JUnit插件提供的 用於聚合測試報告的Pipeline步驟。

 

3、pipeline Demo演示

前提條件

  1. Jenkins 2.x或更高版本
  2. Pipeline插件

可以通過以下任一方式創建基本Pipeline:

  1. 直接在Jenkins網頁界面中輸入腳本。
  2. 通過創建一個Jenkinsfile可以檢入項目的源代碼管理庫。

用任一方法定義Pipeline的語法是一樣的,從項目源碼中檢入jenkinsfile 文件會更方便一些。

 

 

基於腳本構建 pipeline

pipeline {

    agent any

    stages {

        stage('Checkout') {

            steps {

                echo 'Checkout'

        stage('Build') {

            steps {

                echo 'Building'

            }

        }

        stage('test'){

            steps{

                echo 'test'

            }

        }

    }

}

 

 

基於Jenkinsfile 構建

pipeline {

    agent any

    stages {

        stage('checkout') {

            steps {

                echo 'checkout'

                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gogs_luban', url: 'http://git.jiagouedu.com/java-vip/tuling-api-gateway']]])

            }

        }

        stage('build'){

            steps {

                 echo 'build'

                 sh 'mvn clean install'

            }

        }

        stage('save') {

            steps {

               echo 'save'

               archiveArtifacts 'target/*.war'

            }

        }

    }

}

 

 

 

 

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