商品簡介
名人/編輯推薦
序
2016 年 4 月 Jenkins 發佈了 2.0 版本(https://jenkins.io/blog/2016/04/26/jenkins-20-is-here/),開
始支持 pipeline as code。同年 11 月,pipeline as code 作為“採用”項出現在 ThoughtWorks 技術雷達(https://www.infoq.crticle/2016%2F11%2Fthoughtworks-radar-forecast)的採用環中。
2019 年 1 月,筆者見同行在微信群裡吐槽 Jenkins 的老舊,比如 Jenkins 不支持手動 stage。經過瞭解,筆者大概猜到這位朋友還在使用 Jenkins 1.x,或者知識還停留在 Jenkins 1.x 上。因為他說的問題,在 Jenkins 2.x 中已經不存在了。
這裡並不是想說這位朋友不瞭解 Jenkins 2.x,而是想說 Jenkins 1.x 已經成為過去式。長期以來,在中文網站上能搜到的關於 Jenkins 的文章大多停留在 Jenkins 1.x 時代。這樣想來,也就能理解為什麼這位朋友會有這樣的誤解了。
自 Jenkins 2.0 發佈已有三個年頭,據筆者所知,目前市面上還沒有 pipeline as code 實踐方面的書籍。中文的 Jenkins 書籍,只有《Jenkins 權威指南》一本,其中也並沒有 pipeline as code 方面的介紹。本書彌補了這一空白,系統地介紹了 Jenkins 2.x 的 pipeline as code。
本書第 1 章介紹筆者對軟件工程生產力的獨到見解;第 2 章通過一個 Hello world 示例帶領初學者入門 Jenkins pipeline;第 3 章詳細介紹 Jenkins pipeline 的語法;第 4~14 章介紹在 Jenkins pipeline 中如何實現持續集成、持續交付的各個階段,包括構建、測試、製品管理、部署等;第15 章介紹擴展 Jenkins pipeline 的多種方式,本章對希望通過 Jenkins 實現持續集成、持續交付平臺的讀者非常有幫助;第 16 章介紹 Jenkins 運維相關知識;第 17 章介紹筆者整合 Jenkins 與多個第三方系統,實現 ChatOps 及自動化運維的經驗;為避免讀者出現“不知從哪裡下手”的情況,
第 18 章通過一個簡單的案例介紹如何設計 pipeline。筆者建議所有讀者都要閱讀第 1 章和第 3 章,它們是本書的核心;已經入門了 Jenkins pipeline的讀者可以跳過第 2 章;而第 4~14 章可以作為參考手冊使用。
本書適合對 Jenkins 有初步認識,希望通過 Jenkins 實現持續集成、持續交付、DevOps 的技術人員,以及希望瞭解 pipeline as code 技術在實際工作中如何應用的讀者。
最後,感謝策劃編輯鄭柳潔女士為本書付出的努力;感謝劉杜康和黃獻華在百忙之中對部分章節的審校;感謝黃峰達在出版方面的幫助;感謝王曉峰在部署目錄命名方面的建議;感謝志平幫助處理我的個人照片;感謝妻子的理解與支持。
目次
1 關於軟件工程生產力 1
1.1 從另一個角度看“提高軟件工程生產力” . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 從勞動力要素考慮提高軟件工程生產力 . . . . . . . . . . . . . . . . . . . . 2
1.1.2 從勞動對象要素考慮提高軟件工程生產力 . . . . . . . . . . . . . . . . . . . 2
1.1.3 從生產工具要素考慮提高軟件工程生產力 . . . . . . . . . . . . . . . . . . . 3
1.1.4 生產力三要素的意義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Jenkins 介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Jenkins 與 DevOps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 本章小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 pipeline 入門 6
2.1 pipeline 是什麼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Jenkinsfile 又是什麼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 pipeline 語法的選擇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 創建第一個 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5 從版本控制庫拉取 pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.6 使用 Maven 構建 Java 應用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.7 本章小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 pipeline 語法講解 16
3.1 必要的 Groovy 知識 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 pipeline 的組成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.1 pipeline 最簡結構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2 步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 post 部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 pipeline 支持的指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 配置 pipeline 本身 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6 在聲明式 pipeline 中使用腳本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 pipeline 內置基礎步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7.1 文件目錄相關步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7.2 製品相關步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7.3 命令相關步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7.4 其他步驟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.7.5 小貼士 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.8 本章小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4 環境變量與構建工具 37
4.1 環境變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.1 Jenkins 內置變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.2 自定義 pipeline 環境變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.3 自定義全域環境變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 構建工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.1 構建工具的選擇 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.2 tools 指令介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.3 JDK 環境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.4 Maven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.5 Go 語言環境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.6 Python 環境搭建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3 利用環境變量支持更多的構建工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 利用 tools 作用域實現多版本編譯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.5 本章小結 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5 代碼質量 50
5.1 靜態代碼分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 代碼規範檢查 . . . . . . . . . .
主題書展
更多主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。