如何从jenkins build将自定义评论发布回Github PR

时间:2019-11-05 00:18:47

标签: jenkins github jenkins-pipeline github-api multibranch-pipeline

我基本上正在研究如何使用jenkins多分支管道工作向GitHub PR发表评论。一切对我都有效,PR被触发,对源分支的任何提交也触发该分支的PR构建。同样,可以很好地替换变量,但是以某种方式脚本在从构建中发布自定义注释时失败。这是我的示例声明性Jenkinsfile。

sudo systemctl restart php-fpm

这是我看到的错误:-

def PULL_REQUEST = env.CHANGE_ID
pipeline {
         agent {
          label "pod-custom"
        }
  stages {
      stage('Checkout') {
      steps {
        checkout scm
      }
    }
      stage('Test Plan') {
       steps {
	   
          withCredentials([string(credentialsId: 'github-api', variable: 'GITHUB_TOKEN')]) {
		    
            sh "curl -s -H \"Authorization: token ${GITHUB_TOKEN}\" -X POST -d '{\"body\": \"This is my first test comment from jenkins\",\"commit_id\": \"4d0f019b93c11f1fabc8313da4c461dbdbde1fd5\",\"path\": \"Jenkinsfile\",\"position\": 4}' \"https://github.***.com/api/v3/repos/***/${env.GIT_URL.tokenize("/")[-1].tokenize(".")[0]}/pulls/${PULL_REQUEST}/comments\""
  }
		 }
       }
     }

  }

我想知道就此错误而言,GitHub API在寻找什么。我的用例只是,我需要能够向PR发布评论,就像您看到的那样,我正在构建中,并且此评论应该是对PR的直接评论,而不是GitHub中的问题。

这里的任何帮助/建议将一如既往。

1 个答案:

答案 0 :(得分:0)

我能够通过以下帖子解决这个问题: Create comment on pull request。我认为我不太了解github将每个PR视为一个问题,而反之亦然,所以通过执行POST / repos /:owner /:repo / issues /:number / comments可以实现什么我在这里看什么。我可以使用下面的方法进行测试:-

def PULL_REQUEST = env.CHANGE_ID
withCredentials([string(credentialsId: 'github-api', variable: 'GITHUB_TOKEN')]) {
sh "curl -s -H \"Authorization: token ${GITHUB_TOKEN}\" -X POST -d '{\"body\": \"This is my first test comment from jenkins\"}' \"https://github.***.com/api/v3/repos/***/${env.GIT_URL.tokenize("/")[-1].tokenize(".")[0]}/issues/${PULL_REQUEST}/comments\""
}

这条评论“这是我对詹金斯的第一个测试评论”恰好在PR对话标签下,这正是我所需要的。