1. 程式人生 > >Jenkinsfile與Json的轉換

Jenkinsfile與Json的轉換

前段時間調研了下青雲的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語法,之後才發現到這款外掛,不再需要重複造輪子,總體上,如果規劃設計的好的話,應該可以表面上媲美雲效這款產品。

相關推薦

JenkinsfileJson轉換

前段時間調研了下青雲的kubesphere,意外的發現了一個外掛,pipeline-model-definition-plugin,用了將jenkins的pipeline、json互相轉換的,以前可能關注過這個外掛,但是沒怎麼注意,jenkins的plugin上面也沒有找到,不知道為什麼,所以,這裡簡單講解一

jenkins:實現JenkinsfileJson轉換

### 實現Jenkinsfile與Json的轉換 [TOC] 最近在做個需求,需要支援Jenkinsfile和json的轉換。 ### 方法1:使用現有的jenkins外掛 參考的是[這篇文章](https://www.cnblogs.com/w1570631036/p/11726599.html)

Gson Objectjson轉換 巢狀物件

解決問題  正確: { "data":{accesstoken : "odA5niNeOhhi1cIK0eOGhrxCB7ClG9R4gl%2Fa2%2FNcOaJ42tWayXKZZZBgIPsh1tRLshlxWyXlEyY...", expirein :"2017-11

gson java物件json轉換(例項程式碼說明及教程)

java物件轉json public class MsgInfo2 { private String message; private String flag; public String

json物件json轉換需要的maven包

<dependency>     <groupId>org.codehaus.jackson</groupId>     <artifactId>jackson-core-asl</artifactId>    

Json對象Json字符串的轉化、JSON字符串Java對象的轉換

debug pos type 需要 collect ie8 rst toc fire Json對象與Json字符串的轉化、JSON字符串與Java對象的轉換 一.Json對象與Json字符串的轉化 1.jQuery插件支持的轉換方式:   $.parseJSON( json

Java對象JSON互相轉換jsonlib以及手動創建JSON對象數組——(二)

ring lnl tft sem mkf ted family sae key     首先聲明一下,jsonlib轉換與GSON相比太差勁了,操作不是一般的繁瑣。GSON可以直接轉換成各種集合與對象類型。強烈推薦使用GSON。而且GSON一個方法就可以解決,

Javascript中Json對象Json字符串互相轉換方法匯總(4種轉換方式)

bject 參考 str .json obj logs var 轉換 eva 1.Json對象轉Json字符串 JSON.stringify(obj); 2.Json字符串傳Json對象 JSON.parse(str);//第一種 $.parseJSON(str);/

JSONJavabean轉換的幾種形式

img 之一 keys open isp println 轉換成 hang zha JSON格式的數據傳遞是最常用的方法之一,以下列出了常用的幾種形態以及與Javabean之間的轉換:   String json1="{‘name‘:‘zhangsan‘,‘age‘

java對象json對象之間的轉換

字符 class new jar包 lib num round word out jar包:import net.sf.json.JSONObject; 1.解析json字符串 將json字符串轉換為json對象,然後再解析json對象:。JSONObjectjsonObj

Json對象Json字符串互轉(4種轉換方式)

pan cnblogs 方法 () stringify for ie7 afa .json 1>jQuery插件支持的轉換方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json

js中js數組、對象json之間的轉換

clas 語法 方法 使用 blog ejs ava 部門 成了 ?數據在名稱/值對中?數據由逗號分隔?花括號保存對象?方括號保存數組 var jsonString = ‘{"bar":"property","baz":3}‘;//JSON字符串 var jsObject

JAVA 實現XMLJSON 相互轉換

tst throws light getc con parent urn In 工作 原文地址https://blog.csdn.net/congcong68/article/details/39029907 在工作中,經常碰到XML轉為JSON或者JSON轉為XML,在這

Python-字典json轉換

字典 分層 直接 ads 後綴 轉換 indent 內容 user #json是字符串,只不過長得像字典import jsonuser_info=‘‘‘{"niuhy":1234,"shanbl":44566}‘‘‘#json裏只能是雙引號print(user_info)u

Json 字符串 Json 對象自由轉換

parse json2.js 小括號 推薦 json字符串 .json jquer -s pan 1、jQuery支持的轉換方式   $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json對

JQuery擴展方法實現Form表單Json互相轉換

val adjust new 映射 checked josn fin pop undefined JQuery筆記 記兩段代碼,使用JQuery實現從表單獲取json與後端交互,以及把後端返回的json映射到表單相應的字段上。 把表單轉換出json對象 //把表單

java json字串物件轉換

下載引入包gson-2.0.jar 1.字元轉資料 final Map map = new HashMap();map.put("contents",    "[{\"Id\":\"111\",\"AcceptNum\":222,\"ArchiveNum\":

Java Map型別Json字串的互相轉換----------親測有效

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; impor

C 物件JSON字串互相轉換的幾種方式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

stringjson ,mapjson轉換

Map<String, Object> sendDateMap // map轉json物件 String sendDateStr = JSON.toJSONString(sendDateMap);(jsOn格式的) Map<String, Object> resultMap