1. 程式人生 > >Jenkins高階篇之Pipeline方法篇-Pipeline Utility Steps-4-方法readYaml和writeYaml

Jenkins高階篇之Pipeline方法篇-Pipeline Utility Steps-4-方法readYaml和writeYaml

本篇繼續來介紹Pipeline Utility Steps這個外掛支援的特定的方法,前面介紹了讀取JSON和讀properties檔案,這篇來介紹讀寫yaml型別檔案。讀取yaml的方法是readYaml,寫yaml檔案的方法是writeYaml,yaml配置型別檔案在linux系統中還是很常見的。

1.方法readYaml

我在Eclipse專案中的/testdata目錄下,提前做好了一個test.yaml的檔案,並寫入如下資料並儲存。

name: 'Anthony'
age : 18
city: 'Beijing'
isMale: true

module方法中readYaml方法,我寫了支援引數傳入的是一個yaml檔案路徑和直接傳入一個yaml格式的字串內容。這個module裡面完整的方法,請看replay指令碼框或者github上程式碼。

def read_yaml_file(yaml_file) {
	def datas = ""
	if(yaml_file.toString().endsWith(".yml")){
		datas = readYaml file : yaml_file
		
	}else {
		datas = readYaml text : yaml_file
	}
	datas.each {
		println ( it.key + " = " + it.value )
	 }
}

看到沒,上面我為了列印讀取的yaml內容,再次使用了groovy語言中的閉包語法,直接遍歷裡面元素的key和value。

我的pipeline stage 測試程式碼

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER

pipeline{
	
	agent any
	stages{
		stage("init") {
			steps{
				script{
					model_test = load env.WORKSPACE + "/pipeline/module/pipeline-demo-module.groovy"
				}
			}
		}
		stage("read yaml file") {
			steps{
				script{
					yaml_file = env.WORKSPACE + "/testdata/test.yml"
					model_test.read_yaml_file(yaml_file)
					println "=========================="
					yaml_string = """
                                        age: 18
                                        city: 'Shanghai'
                                        isMale: false
                                        name: 'Lucy'
                                        """
					model_test.read_yaml_file(yaml_string)
				}
			}
		}
	}
}


關於上面這個文件註釋符裡面的yaml格式內容,我要特意指出這裡不能用tab來代替鍵盤空格鍵產生的空格,不然就會報錯。

我的Jenkins測試job:http://65.49.216.200:8080/job/pipeline-project-demo/57/

或者http://65.49.216.200:8080/job/pipeline-project-demo/54/

2.方法writeYaml

繼續介紹寫yaml方法,下面介紹如何把一個字典型別資料寫入到yaml檔案中。

module方法

def write_to_yaml(map_data, yaml_path) {
	writeYaml file: yaml_path , data: map_data
}

pipeline stage test程式碼

import hudson.model.*;

println env.JOB_NAME
println env.BUILD_NUMBER

pipeline{
	
	agent any
	stages{
		stage("init") {
			steps{
				script{
					model_test = load env.WORKSPACE + "/pipeline/module/pipeline-demo-module.groovy"
				}
			}
		}
		stage("write into yaml file") {
			steps{
				script{
					def amap = [name: 'Anthony',
                                age : 18,
                                city: 'Beijing',
                                isMale: true
								]
					yaml_file = env.WORKSPACE + "/testdata/new.yml"
					model_test.write_to_yaml(amap, yaml_file)
					println "the contents of yaml file are: "
					model_test.read_yaml_file(yaml_file)
				}
			}
		}
	}
}


我的Jenkins 成功構建測試job:http://65.49.216.200:8080/job/pipeline-project-demo/59/console

看這個日誌列印就說明了寫入到yaml檔案成功,或者你去自己jenkins構建的workspace下找到這個./testdata/new.yaml檔案,驗證裡面的內容。

好了到這裡,關於Pipeline Utility Steps這個外掛的常用方法學習,介紹到這裡。這個外掛的官方網頁地址是https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/

我已經介紹了這個外掛裡面一半以上方法,如下圖紅圈方法是我們前面介紹過的。

關於pipeline上不同外掛支援不同方法,你可以開啟這個頁面檢視https://jenkins.io/doc/pipeline/steps/。

我也就是介紹一些基礎常用的外掛以及方法,其他可能是專案需要,到時候自己再跑過去看文件學習就可以。接下來,我要介紹在安裝pipeline元件的時候,自動安裝一個元件裡面的方法,Pipeline:Basic Steps,這個方法你可以到外掛管理,已安裝介面看到。

也就是說,接下來學習的Basic Steps外掛裡面的方法,最好你都要掌握。只有basic steps裡面方法不夠用的時候,你才要考慮其他外掛的方法。到這裡,確實,我寫文章順序有點問題,應該先介紹basic steps外掛下的方法。但是,前面外掛學習應該也不難,有了這個基礎,學習basic steps下的方法應該也是很容易。