Jenkins 2.0開始推行Pipeline as Code,實現從CI到CD的轉變。 Pipeline實際上是一套Groovy DSL,用Groovy腳本描述CI/CD的流程,Jenkins可以從代碼庫中獲取腳本,實現了Pipeline as Code。Pipeline將原來獨立運行的多個任務連接起來,可以實現更加復雜的CI/CD流程。
為什么要使用Pipeline?對於實踐微服務的團隊,產品有很多服務組成,傳統的在Jenkins中集中進行job配置的方式會成為瓶頸,微服務團隊會將CI Job的配置和服務的發布交給具體負責某個服務的團隊,這正需要Pipeline as Code; 除此之外,一次產品的發布會涉及到多個服務的協同發布,用單個CI Job實現起來會十分困難,使用Pipeline可以很好的完成這個需求。
一、Pipeline的基本概念和Jenkinsfile
- Node:一個Node就是一個Jenkins節點,可以是Master,也可以是Slave,是Pipeline中具體Step的運行環境。
- Stage:一個Pipeline有多個Stage組成,每個Stage包含一組Step。注意一個Stage可以跨多個Node執行,即Stage實際上是Step的邏輯分組。
- Step:是最基本的運行單元,可以是創建一個目錄、從代碼庫中checkout代碼、執行一個shell命令、構建Docker鏡像、將服務發布到Kubernetes集群中。Step由Jenkins和Jenkins各種插件提供。
c.新增憑據(只需要新增一次即可,第二次如果還是從相同倉庫拉去不需要在新增憑據)
注意:
新增憑據這里就是為了和gitee建立連接
彈窗內容,注意這里需要使用ssh連接,需要一對密鑰,公鑰保存在gitee中,私鑰在下面添加
d.設置執行代碼
node{ stage 'checkout' git([url:'https://gitee.com/haugus/automated-testing-keyword-driven.git',branch:"master"]) stage 'run' sh 'python run.py' }
注意:
由於上述配置的是ssh方式連接,所有項目在gitee中的地址,必須寫出ssh地址,類似:git@gitee.com
e.注意
在構建之前,由於我這里是拉去的代碼是接口自動化測試的代碼,所以Jenkins服務器要能執行必須要有python3的環境,以及相應的庫
pip install requests
pip install openpyxl
pip install ddt