簡體   English   中英

用於檢查命令輸出並根據參數失敗或通過 jenkins 構建的腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM