Jenkins CI/CD分离执行实践

在生产环境中,可能存在这样一种部署情况:生产服务器无法通过公网ip进行ssh访问,也就无法通过Jenkins的ssh命令进行部署。
我尝试使用以下方法解决:

  1. 局域网中(或者云服务器)部署Jenkins,用作代码编译和打包。
  2. 远程服务器中也部署一个Jenkins,执行拉取和构建
  3. 打包完成后通过Jenkins的Http Api来触发远程服务器的构建Job。

如何触发远程的job执行?

Jenkins的stage代码如下:

    stage('部署') {
      steps {
          script {
      def code = sh(
          script: '''
              curl -X POST http://XXX/jenkins/job/JOBNAME/buildWithParameters --user USER:TOKEN--data service=java -H 'Content-Type: application/x-www-form-urlencoded' -w "%{http_code}"
          ''',
          returnStdout: true
      ).trim()

      echo "HTTP Code: ${code}"
      if (code != "201") {
          error("触发 Jenkins2 失败,HTTP Code=${code}")
      }
   }

其中最关键的是执行curl命令,并判断返回code是否等于201。其中JOBNAME参数要替换为实际的job名称。Jenkins Http Api的更多内容可参考官网文档:https://www.jenkins.io/doc/book/using/remote-access-api/

用户的token可通过点击用户的头像,然后进行token的创建。
image

posted @ 2026-08-04 16:56  Hekk丶  阅读(8)  评论(0)    收藏  举报