如何在 jenkins 管道 A 的 if-else 条件之间调用 jenkins 管道 B?

如何在 jenkins 管道 A 的 if-else 条件之间调用 jenkins 管道 B?

詹金斯管道-A

pipeline{
  stage('deploy'){
    agent { label 'slave' }
  steps{
    script{
      if [ "$deployenv" = dev ];
      then 
        echo 'restart not required'
      elif [ "$deployenv" = qa ];
      then
        echo "restart required"
        //need to invoke another jenkins pipeline-B here
      fi
    }
  }

答案1

用于执行构建或管道的 Shell 命令可以插入管道 A 中您想要调用管道 B 的 Shell 脚本中。

您想要触发管道 B 的点可以使用“SSH”或“Curl”或“Java CLI 客户端”来使用 JENKINS API 来控制它。

使用 SSH:

ssh -l USERNAME -p JENKINSPORT SERVER COMMAND ## Pipeline B should be the COMMAND here  

[[ 最初,您必须启用 SSH 访问并配置身份验证 ]]

参考:https://www.jenkins.io/doc/book/managing/cli/#ssh

使用 Java CLI 客户端:

通过以下方式下载客户端:

JENKINS_URL/jnlpJars/jenkins-cli.jar  

通过以下方式执行:

java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...] ## Pipeline B should be the COMMAND here  

参考:https://www.jenkins.io/doc/book/managing/cli/#using-the-cli-client

与卷曲:

像这样的东西:

curl -X POST http://....:8080/job/....  

使用用户名和凭据,

curl -X POST --user <jenkins_username>:<jenkins_API_key> http://<jenkins_server_url>/job/<your_jenkins_job_name>/build ## Pipeline B should be the COMMAND here  

参考:https://myopswork.com/when-shell-scripts-meets-jenkins-61594f576e96

相关内容