Jenkins教程(四)安裝BlueOcean與Maven構建

  • 2019 年 10 月 3 日
  • 筆記

前言

本文旨在使用BlueOcean實現構建可視化與使用Maven構建上一節Jenkins教程(三)添加憑據與流水線拉取Git程式碼拉下來的程式碼

什麼是Blue Ocean

Blue Ocean 重新思考Jenkins的用戶體驗,從頭開始設計Jenkins Pipeline, 但仍然與自由式作業兼容,Blue Ocean減少了混亂而且進一步明確了團隊中每個成員 Blue Ocean 的主要特性包括:

  • 持續交付(CD)Pipeline的 複雜可視化 ,可以讓您快速直觀地理解管道狀態。
  • Pipeline 編輯器 – 引導用戶通過直觀的、可視化的過程來創建Pipeline,從而使Pipeline的創建變得平易近人。
  • 個性化 以適應團隊中每個成員不同角色的需求。
  • 在需要干預和/或出現問題時 精確定位 。 Blue Ocean 展示 Pipeline中需要關注的地方, 簡化異常處理,提高生產力
  • 本地集成分支和合併請求, 在與GitHub 和 Bitbucket中的其他人協作編碼時實現最大程度的開發人員生產力。

簡言之:簡化複雜可視化,提供更個性直觀的介面,可以精準定位構建失敗的位置

安裝Blue Ocean

  • 準備條件:是管理員用戶,或擁有安裝插件的許可權

Manage Jenkins > Manage Plugins

過濾輸入Blue Ocean> 勾選第一個Blue Ocean > 直接安裝 > 安裝完成返回首頁

這裡提示有很多Blue Ocean的插件,我們是無需手動安裝的,通過安裝Blue Ocean會自動安裝官方推薦的其它組件

此時我們可以使用 <host>:<port>/blue進行訪問到Blue Ocean的頁面

這裡先不講,配置好Maven後,我們再來使用它來構建一次

使用Maven構建工具

這裡使用docker的maven鏡像來進行構建工程,以減少多個構建工程使用同一構建工具時的衝突問題

另一方面是演示下agent的使用?

準備條件:

  • 安裝Docker
  • 添加Jenkins到Docker用戶組sudo usermod -aG docker jenkins && newgrp docker
  • 重啟Jenkins

創建自定義maven的配置文件/home/jenkins/mvnrepo/settings.xml,使用了阿里的鏡像源,本地倉庫這個不用改,這裡會被容器映射到容器內/root/.m2

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0                        https://maven.apache.org/xsd/settings-1.0.0.xsd">    <mirrors>      <mirror>          <id>nexus-aliyun</id>          <mirrorOf>*</mirrorOf>          <name>Nexus aliyun</name>          <url>http://maven.aliyun.com/nexus/content/groups/public</url>      </mirror>    </mirrors>  </settings>

在Github的倉庫中我創建了chapter2分支,裡面的Jenkinsfile如下

pipeline {      agent { //這裡使用docker鏡像來啟動maven,這樣有個好處就是多個工程同時構建時不會出現衝突而失敗          docker {              image 'maven:3.6-alpine'              args '-u root -v /home/jenkins/mvnrepo:/root/.m2'  //持載到本地,減少重複下載量,使用ali源          }      }      stages {          stage('Pull Git Demo') {              steps{                  //拉取程式碼                  git 'https://github.com/hellxz/springboot-demo1.git'              }          }          stage('Build') {              steps {                  //執行構建命令                  sh 'mvn -B -DskipTests clean package'              }          }      }  }

持載的那個位置下的settings.xml會被maven容器使用,從而修改鏡像源,另外在settings.xml中指不指定本地倉庫都沒區別,親測

創建流水線

指定Jenkinsfile所在的版本控制與分支,這裡我使用的是https://github.com/hellxz/JenkinsfileTutorials.git

分支是chapter2,檢出到chapter2目錄下,Jenkinsfile直接就在倉庫的根目錄內

啟動測試

輸入http://<host>:<port>/blue, 點擊剛才創建的maven build demo項目

點擊運行

構建成功,我們查看Build步驟,可以看到構建成功了

由於在公司里我使用的是本地配置的maven,所以查hub.docker.com,對Jenkinsfile中使用maven鏡像的部分修改了幾次,不然你會看到拉取的jar包都是從阿里源中拉出來的

查看構建目錄

本文結束

後記

被maven-docker的文檔小坑了一下,文檔中提到的自定義settings.xml文件是持載到另一個目錄下

還有就是maven容器內使用的用戶是非root用戶,如果按官方文檔中不加-u root,那麼容器內的/root/.m2目錄是持載不出來的!

當前我們的構建屬於臟構建,即上次的構建結果與程式碼拉取結果都在同一個工作目錄中,這樣是需要修改的,現在為了簡單演示沒有添加,可以在拉程式碼前加一個清理空間的步驟,使用cleanWs()命令

下篇準備寫把微服務項目打成Docker鏡像,靜請期待

引文

Docker Hub/Maven

Using docker image of maven with jenkins – could not create local repository

使用Maven構建Java應用程式

本文系Hellxz學習與實踐文章,禁止布布扣、碼迷、愛碼網等第三方爬蟲網站爬取,轉載請在醒目位置註明出處:https://www.cnblogs.com/hellxz/p/pipeline_maven_build.html