Запуск команды cURL каждую 1 секунду, пока не будет выполнено условие - PullRequest
0 голосов
/ 10 марта 2020

После того, как я создал заявку, мне нужно постоянно проверять статус (каждые 1 сек c), пока он не вернется как approved или rejected. Затем я хочу выйти из l oop. Кто-нибудь знает чистый способ сделать это?

stages {
        stage('Open and Check ticket status’) {
            steps {
                script {
                    dockerImage.inside(" -u root ") {
                        // Open ticket
                        withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')]) {
                            cmd = "curl -X POST -H 'x-api-key:${API_KEY}' '${URL}/requests' | jq -r '.requestId'"
                            REQUEST_ID = sh(script: cmd, returnStdout: true).trim()
                            print(REQUEST_ID)
                        }

                        // Check ticket Status
                        withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')]) {
                            cmd = "curl -X GET -H 'x-api-key:${API_KEY}' '${URL}/requests/${REQUEST_ID}'  | jq -r '.requestStatus'"
                            REQUEST_STATUS = sh(script:cmd, returnStdout: true).trim()
                            print(REQUEST_STATUS)
                        }
                    }
                }
            }
        }
    }

1 Ответ

1 голос
/ 10 марта 2020

Вы можете попробовать это, используя l oop .. Я думаю, что это работает ..
// Проверить статус заявки

withCredentials([string(credentialsId: JENKINS_API_KEY, variable: 'API_KEY')]) 
{
  while ({
   cmd = "curl -X GET -H 'x-api-key:${API_KEY}' '${URL}/requests/${REQUEST_ID}'  | jq -r '.requestStatus'"
   REQUEST_STATUS = sh(script:cmd, returnStdout: true).trim()
   print(REQUEST_STATUS)
   sleep('time': 1,'unit':"SECONDS")
   !["approved","rejected"].contains(REQUEST_STATUS)     
 }()) continue
 }
...