Unable to implement check in my integration, getting 'map undefined' for create method of checks

。_饼干妹妹 提交于 2020-06-13 05:57:07

问题


I am trying to implement Checks into my GitHub app. My App is built with probot.

I am just not able to implement the checks. I have tried going through the documentation which demonstrate ruby example that includes several different setups(not sure if required with probot). I just got confused with the example there.

Below is the code that resides in my index.js :

app.on('check_suite.requested', async context =>{
      console.log('************------------ check suite requested')
      await context.github.checks.create({
        mediaType:'application/vnd.github.antiope-preview+json',
        name : 'test-check-1',
        head_sha: context.payload.check_suite.after,
        conclusion: "success"
      })
  })

I get below error

 ERROR probot: Cannot read property 'map' of undefined
  TypeError: Cannot read property 'map' of undefined

The error log complains about index.js:24:35, which is precisely the createmethod in the line await context.github.checks.create

Is the above code sufficient to create the check test-check-1 or do I need to take care of other things too. I already have the "Required status checks to pass before merging" option enabled under the branch protection settings of my repo. And that section displays Sorry, we couldn’t find any status checks in the last week for this repository.

Not sure how to connect everything.

EDIT 1 : START

Below is the code after including the required params as suggested by @OscarDOM :--

app.on('check_suite.requested', async context =>{
      console.log('*****check suite requested*****')
      context.github.checks.create({
        owner:context.payload.repository.owner,
        repo:context.payload.repository.name,
        mediaType:'application/vnd.github.antiope-preview+json',
        name : 'test-check-1',
        head_sha: context.payload.check_suite.after,
        conclusion: "success"
      })
  })

Unfortunately, I still get the same error at exact same line and column.

EDIT 1 : END

EDIT 2 : START

Below is the final working code after including corrections for the mediaType parameter :

Please note there was one more mistake I had to correct and that is the value owner param. The correct way is to specify context.payload.repository.owner.login and this was something I had recently learnt from this StackOverflow post

app.on('check_suite.requested', async context =>{
      console.log('*****check suite requested*****')
      context.github.checks.create({
        owner:context.payload.repository.owner.login,
        repo:context.payload.repository.name,
        mediaType: { previews: ['antiope']},
        name : 'test-check-1',
        head_sha: context.payload.check_suite.after,
        conclusion: "success"
      })
  })

EDIT 2 : END


回答1:


Would it be possible you need to pass the owner and the repository to context.github.checks.create() method? I think they are required properties: https://octokit.github.io/rest.js/v17#checks

Also, make sure the Github App has the following permissions: checks:write(https://developer.github.com/v3/activity/events/types/#checkrunevent)


Also, checking your code snippet, seems that you are not using the mediaType properly. If you check the type definition, mediaType has the following structure:

mediaTypes: {
   format?: string,
   previews?: string[]
}

Reference here: https://octokit.github.io/rest.js/v17#previews

Can you try it with this?

app.on('check_suite.requested', async context =>{
        console.log('************------------ check suite requested')
        await context.github.checks.create({
            owner: '<YOUR_ORGANIZATION>',
            repo: '<YOUR_REPO>',
            mediaType: { previews: ['antiope']},
            name : 'test-check-1',
            head_sha: context.payload.check_suite.after,
            conclusion: "success"
        })
    })

As a general feedback, I suggest you to try TypeScript, these issues would have been spotted using it :)



来源:https://stackoverflow.com/questions/61810089/unable-to-implement-check-in-my-integration-getting-map-undefined-for-create

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!