Jenkinsfile與Json的轉換
- 2019 年 12 月 6 日
- 筆記
前段時間調研了下青雲的kubesphere,意外的發現了一個插件,pipeline-model-definition-plugin,用了將jenkins的pipeline、json互相轉換的,以前可能關注過這個插件,但是沒怎麼注意,jenkins的plugin上面也沒有找到,不知道為什麼,所以,這裡簡單講解一下吧。
一、安裝
jenkins的plugin上面沒有提供,所以只能自己打包編譯,github上面也給出了打包的過程:cd pipeline-model-definition && mvn install && mvn hpi:run,然後將hpi文件上傳到插件即可。
二、主要api介面
2.1 獲取pipeline的json格式JSON Schema
URL: JENKINS_URL/pipeline-model-schema/json Info: 獲取json格式的jenkinsfile Returns: json
2.2 將jenkinsfile轉成json格式
URL: JENKINS_URL/pipeline-model-converter/toJson Parameters: jenkinsfile格式的文本 Info: 獲取jenkinsfile,然後將它轉換成json。 Returns: 如果成功,則返回json,否則返回報錯資訊
2.3 將json格式轉換成jenkinsfile
URL: JENKINS_URL/pipeline-model-converter/toJenkinsfile Parameters: json格式的文件 Info: 獲取json格式的文件,然後將它轉換成jenkinsfile Returns: 如果成功,返迴轉換後的jenkinsfile,如果失敗,返回報錯資訊。
還有一些其他的介面(如:驗證json,groovy語法轉換等)就不在講解了。
三、Demo
這裡將官網給出的最簡單的一個例子轉換成json,構建->單元測試->部署整個過程
pipeline { agent any stages { stage(''Build'') { steps { echo ''Building..'' } } stage(''Test'') { steps { echo ''Testing..'' } } stage(''Deploy'') { steps { echo ''Deploying....'' } } } }
在postman提交請求:

即可獲得返回的結果:
{ "status": "ok", "data": { "result": "success", "json": { "pipeline": { "stages": [ { "name": "Build", "branches": [ { "name": "default", "steps": [ { "name": "echo", "arguments": [ { "key": "message", "value": { "isLiteral": true, "value": "Building.." } } ] } ] } ] }, { "name": "Test", "branches": [ { "name": "default", "steps": [ { "name": "echo", "arguments": [ { "key": "message", "value": { "isLiteral": true, "value": "Testing.." } } ] } ] } ] }, { "name": "Deploy", "branches": [ { "name": "default", "steps": [ { "name": "echo", "arguments": [ { "key": "message", "value": { "isLiteral": true, "value": "Deploying...." } } ] } ] } ] } ], "agent": { "type": "any" } } } } }
四、總結
之前發過一篇講解過如果使用jenkins x來製作一款類似阿里云云效的東西,但是之前沒有發現到這款插件,導致語法的轉換需要自行切割pipeline語法,之後才發現到這款插件,不再需要重複造輪子,總體上,如果規劃設計的好的話,應該可以表面上媲美雲效這款產品。
