https://www.qikqiak.com/k8s-book/docs/37.Jenkins%20Pipeline.html
1 Jenkins Pipeline 介紹
https://www.cnblogs.com/wangxu01/articles/11156603.html
Pipeline,簡單來說,就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜流程編排和可視化的工作。
Jenkins Pipeline 有幾個核心概念:
- Node:節點,一個 Node 就是一個 Jenkins 節點,Master 或者 Agent,是執行 Step 的具體運行環境,比如我們之前動態運行的 Jenkins Slave 就是一個 Node 節點
- Stage:階段,一個 Pipeline 可以划分為若干個 Stage,每個 Stage 代表一組操作,比如:Build、Test、Deploy,Stage 是一個邏輯分組的概念,可以跨多個 Node
- Step:步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構建一個 Docker 鏡像,由各類 Jenkins 插件提供,比如命令:sh 'make',就相當於我們平時 shell 終端中執行 make 命令一樣。s
那么我們如何創建 Jenkins Pipline 呢?
- Pipeline 腳本是由 Groovy 語言實現的,但是我們沒必要單獨去學習 Groovy,當然你會的話最好
- Pipeline 支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法
- Pipeline 也有兩種創建方法:可以直接在 Jenkins 的 Web UI 界面中輸入腳本;也可以通過創建一個 Jenkinsfile 腳本文件放入項目源碼庫中
- 一般我們都推薦在 Jenkins 中直接從源代碼控制(SCMD)中直接載入 Jenkinsfile Pipeline 這種方法
2 創建一個簡單的 Pipeline
直接在 Jenkins 的 Web UI 界面中輸入腳本運行
- 新建 Job:在 Web UI 中點擊 New Item -> 輸入名稱:pipeline-demo -> 選擇下面的 Pipeline -> 點擊 OK
- 配置:在最下方的 Pipeline 區域輸入如下 Script 腳本,然后點擊保存。
4 部署Kubernetes 應用
部署應用的流程
- 編寫代碼
- 測試
- 編寫 Dockerfile
- 構建打包 Docker 鏡像
- 推送 Docker 鏡像到倉庫
- 編寫 Kubernetes YAML 文件
- 更改 YAML 文件中 Docker 鏡像 TAG
- 利用 kubectl 工具部署應用
這里我們來將一個簡單 golang 程序,部署到 kubernetes 環境中,代碼鏈接:https://github.com/cnych/jenkins-demo。如果按照之前的示例,我們是不是應該像這樣來編寫 Pipeline 腳本:
- 第一步,clone 代碼,這個沒得說吧
- 第二步,進行測試,如果測試通過了才繼續下面的任務
- 第三步,由於 Dockerfile 基本上都是放入源碼中進行管理的,所以我們這里就是直接構建 Docker 鏡像了
- 第四步,鏡像打包完成,就應該推送到鏡像倉庫中吧
- 第五步,鏡像推送完成,是不是需要更改 YAML 文件中的鏡像 TAG 為這次鏡像的 TAG
- 第六步,萬事俱備,只差最后一步,使用 kubectl 命令行工具進行部署了