《Jenkins 2.x實踐指南》讀書筆記-Jenkins 2.x簡介和pipeline示例

[TOC]git

1. Jenkins 2.x簡介

1.1 pipeline是什麼

從某種抽象層次上講,部署流水線(Deployment pipeline)是指從軟件版本控制庫到用戶手中這一過程的自動化表現形式。——《持續交付——發佈可靠軟件的系統方法》(下稱《持續交付》)
按《持續交付》中的定義,Jenkins原本就支持pipeline(一般會把部署流水線簡稱爲pipeline,本書會交替使用這兩個術語),只是一開始不叫pipeline,而叫任務。
Jenkins 1.x只能經過界面手動操做來「描述」部署流水線。Jenkins 2.x終於支持pipeline as code了,能夠經過「代碼」來描述部署流水線。
使用「代碼」而不是UI的意義在於:github

  • 更好地版本化:將pipeline提交到軟件版本庫中進行版本控制。
  • 更好地協做:pipeline的每次修改對全部人都是可見的。除此以外,還能夠對pipeline進行代碼審查。
  • 更好的重用性:手動操做無法重用,可是代碼能夠重用。
    本書全面擁抱pipeline as code,放棄依賴手動操做的自由風格的項目(FreeStyle project)。

1.2 Jenkinsfile又是什麼

Jenkinsfile就是一個文本文件,也就是部署流水線概念在Jenkins中的表現形式。像Dockerfile之於Docker。全部部署流水線的邏輯都寫在Jenkinsfile中。docker

1.3 pipeline語法的選擇

Jenkins pipeline有2種語法:腳本式(Scripted)語法和聲明式(Declar-ative)語法。
腳本式語法使用Groovy語言,其語法靈活、可擴展,可是也意味着更復雜。再者,Groovy語言的學習成本對於(不使用Groovy的)開發團隊來講一般是沒必要要的。因此纔有了聲明式語法,一種提供更簡單、更結構化(more opinionated)的語法。oracle

  1. pipeline插件從2.5版本開始,才同時支持兩種格式的語法;
  2. 推薦主要使用聲明式語法,腳本式語法做爲輔助;

1.4 pipeline版本控制化

爲了便於維護和協做,使用版本倉庫對pipeline進行版本控制是生產使用過程當中的最優選擇。
本人實踐過程當中也是推薦書中提到的使用Git做爲版本控制倉庫,使用Jenkins ssh私鑰做爲憑證。ssh

添加ssh私鑰憑據

2. 利用github倉庫pipeline進行構建

如下爲本實驗地址:
https://github.com/ygqygq2/jenkins2_learning_install_toolsmaven

目的
使用jenkins拉取git倉庫內pipeline構建maven項目,達到了解pipeline基本用法。ide

環境學習

  • github倉庫
  • jenkins(已整合kubernetes)

實踐優化

  1. 進入Manage Jenkins→Global Tool Configuration->Maven頁添加mvn-3.5.4

添加maven-3.5.4

  1. 進入Manage Jenkins→Global Tool Configuration→JDK頁添加jdk-8u172

添加jdk-8u172

注意這裏須要oracle賬戶驗證。插件

  1. 添加pipeline項目

添加pipeline項目

  1. 構建
    《Jenkins 2.x實踐指南》讀書筆記-Jenkins 2.x簡介和pipeline示例

由於jenkins-slave是整合kubernetes的,所以每次構建都會安裝tools,如上圖能夠看出,maven安裝包須要從官方下載,這對效率影響很是大。若想優化能夠考慮jenkins-slave鏡像中直接整合maven,而不是使用jenkins tools;還可使用docker-in-docker配合maven鏡像。

相關文章
相關標籤/搜索