[英]Script to check output of a command and fail or pass jenkins build based on a parameter
我有一個 Jenkins 作業,它對 yaml 文件運行策略檢查,如果存在錯誤,則返回拒絕消息。 如果返回拒絕消息,我想編寫一個腳本以使作業失敗。
這是命令:
opa exec "/var/lib/jenkins/workspace/open-policy-agent-test/" --config-file=/home/isw_user/opa-conf.yaml --decision /rules
這是命令的結果:
{
"result": [
{
"path": "/var/lib/jenkins/workspace/open-policy-agent-test/atlantis.yaml",
"result": {
"deny": []
}
},
{
"path": "/var/lib/jenkins/workspace/open-policy-agent-test/manifest/samplefour.yaml",
"result": {
"deny": []
}
},
{
"path": "/var/lib/jenkins/workspace/open-policy-agent-test/test.yaml",
"result": {
"deny": [
"Wrong"
]
}
}
]
}
因此,如果拒絕命令包含任何我希望構建失敗的消息。
有沒有辦法做到這一點?
是的,您可以簡單地執行命令並返回STDOUT
。 如果您要返回 JSON,您甚至可以解析 Json 並提取您想要的任何值並進行驗證。 請參考以下示例。 請注意returnStdout: true
返回命令的輸出。
pipeline {
agent any
stages {
stage('Test') {
steps {
script {
def output = sh(returnStdout: true, script: "opa exec "/var/lib/jenkins/workspace/open-policy-agent-test/" --config-file=/home/isw_user/opa-conf.yaml --decision /rules").trim()
if (output != "") { // Do any validation here
error "Build Has Errors, Failing"
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.