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