Невозможно реализовать проверку в моей интеграции, получаю "карта не определена" для метода создания проверок
Я пытаюсь внедрить проверки в свое приложение GitHub. Мое приложение построено с проботом.
Я просто не могу проводить проверки. Я пробовал просмотреть документацию, которая демонстрирует пример рубина, который включает несколько различных настроек (не уверен, требуется ли это с проботом). Я просто запутался там с примером.
Ниже приведен код, который находится в моем 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"
})
})
Я получаю ошибку ниже
ERROR probot: Cannot read property 'map' of undefined
TypeError: Cannot read property 'map' of undefined
Журнал ошибок жалуется на index.js:24:35, что в точности соответствует create
метод в строке await context.github.checks.create
Достаточно ли приведенного выше кода для создания проверки test-check-1 или мне нужно позаботиться и о других вещах. У меня уже есть опция "Обязательные проверки статуса перед объединением", включенная в настройках защиты веток моего репо. В этом разделе отображается Извините, мы не смогли найти никаких проверок статуса за последнюю неделю для этого репозитория.
Не уверен, как все подключить.
РЕДАКТИРОВАТЬ 1: НАЧАТЬ
Ниже приведен код после включения необходимых параметров, предложенных @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"
})
})
К сожалению, я все еще получаю ту же ошибку в той же строке и столбце.
РЕДАКТИРОВАТЬ 1: КОНЕЦ
РЕДАКТИРОВАТЬ 2: НАЧАТЬ
Ниже приведен окончательный рабочий код после внесения исправлений в параметр mediaType:
Обратите внимание, что мне пришлось исправить еще одну ошибку - параметр value owner. Правильный способ - указать context.payload.repository.owner.login, и об этом я недавно узнал из этой публикации на Stackru.
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"
})
})
РЕДАКТИРОВАТЬ 2: КОНЕЦ
1 ответ
Можно ли передать владельца и репозиторий context.github.checks.create()
метод? Я думаю, это обязательные свойства: https://octokit.github.io/rest.js/v17
Также убедитесь, что приложение Github имеет следующие разрешения: checks:write
(https://developer.github.com/v3/activity/events/types/)
Кроме того, при проверке фрагмента кода выясняется, что вы не используете mediaType
должным образом. Если вы проверите определение типа, mediaType имеет следующую структуру:
mediaTypes: {
format?: string,
previews?: string[]
}
Ссылка здесь: https://octokit.github.io/rest.js/v17
Вы можете попробовать это с этим?
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"
})
})
В качестве общего отзыва я предлагаю вам попробовать TypeScript, эти проблемы были бы обнаружены с его помощью:)