14 KiB
title, intro, redirect_from, versions, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
| title | intro | redirect_from | versions | topics | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Использование вложений содержимого | Вложения содержимого позволяют приложению GitHub предоставлять дополнительные сведения в GitHub для URL-адресов, ссылающихся на зарегистрированные домены. GitHub отображает сведения, предоставленные приложением по URL-адресу, в тексте проблемы или запроса на вытягивание либо в комментарии к ним. |
|
|
|
f557a804d48144df24398f75e90a589d563d941b | 47bd0e48c7 |
HT | ru-RU | 09/05/2022 | 147081026 |
{% data reusables.pre-release-program.content-attachments-public-beta %}
Сведения о вложениях содержимого
Приложение GitHub может зарегистрировать домены, которые будут запускать события content_reference. Когда кто-то включает в текст или комментарий к проблеме или запросу на вытягивание URL-адрес, который ссылается на зарегистрированный домен, приложение получает веб-перехватчик content_reference. Вложения содержимого можно использовать для визуального предоставления дополнительных контекстов или данных для URL-адреса, добавленного в проблему или запрос на вытягивание. URL-адрес должен быть полным URL-адресом, который начинается с http:// или https://. URL-адреса, которые являются частью ссылки Markdown, игнорируются и не запускают событие content_reference.
Прежде чем использовать API {% data variables.product.prodname_unfurls %}, необходимо настроить ссылки на содержимое для приложения GitHub:
- Предоставьте приложению
Read & writeразрешения "Ссылки на содержимое". - При настройке разрешения "Ссылки на содержимое" Зарегистрируйте до 5 допустимых общедоступных доменов. Не используйте IP-адреса при настройке доменов ссылок на содержимое. Вы можете зарегистрировать доменное имя (example.com) или поддомен (subdomain.example.com).
- Подпишите приложение на событие "Ссылка на содержимое".
После установки приложения в репозитории в комментариях к проблеме или запросу на вытягивание в репозитории, содержащему URL-адреса зарегистрированных доменов будет сгенерировано событие ссылки на содержимое. Приложение должно создать вложение содержимого в течение шести часов после публикации URL-адреса ссылки на содержимое.
Вложения содержимого не будут обновлять URL-адреса задним числом. Это работает только для URL-адресов, если они добавлены в проблемы или запросы на вытягивание после настройки приложения с помощью описанных выше требований, а затем кто-либо установил приложение в своем репозитории.
Порядок настройки разрешений приложения GitHub и подписок на события см. в разделе "Создание приложения GitHub" или "Изменение разрешений приложения GitHub".
Реализация потока вложения содержимого
Поток вложения содержимого показывает связь между URL-адресом в проблеме или запросе на вытягивание, событием веб-перехватчика content_reference и конечной точкой REST API, который необходимо вызвать для обновления проблемы или запроса на вытягивание с учетом дополнительных сведений:
Шаг 1. Настройте приложение с помощью рекомендаций, описанных в разделе Сведения о вложениях содержимого. Вы также можете использовать пример приложения Probot для начала работы с вложениями содержимого.
Шаг 2. Добавьте URL-адрес домена, зарегистрированного в запросе на вытягивание. Необходимо использовать полный URL-адрес, который начинается с http:// или https://.
Шаг 3. Ваше приложение получит веб-перехватчик content_reference с действием created.
{
"action": "created",
"content_reference": {
"id": 17,
"node_id": "MDE2OkNvbnRlbnRSZWZlcmVuY2UxNjA5",
"reference": "errors.ai"
},
"repository": {
"full_name": "Codertocat/Hello-World",
},
"sender": {...},
"installation": {
"id": 371641,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMzcxNjQx"
}
}
Шаг 4. Приложение использует поля content_reference id и repository full_name для создания вложения содержимого с помощью REST API. Вам также потребуется выполнить проверку подлинности installation id в качестве установки приложения GitHub.
{% data reusables.pre-release-program.corsair-preview %} {% data reusables.pre-release-program.api-preview-warning %}
Параметр body может содержать Markdown:
curl -X POST \
{% data variables.product.api_url_code %}/repos/Codertocat/Hello-World/content_references/17/attachments \
-H 'Accept: application/vnd.github.corsair-preview+json' \
-H 'Authorization: Bearer $INSTALLATION_TOKEN' \
-d '{
"title": "[A-1234] Error found in core/models.py file",
"body": "You have used an email that already exists for the user_email_uniq field.\n ## DETAILS:\n\nThe (email)=(Octocat@github.com) already exists.\n\n The error was found in core/models.py in get_or_create_user at line 62.\n\n self.save()"
}'
Дополнительные сведения о создании маркера установки см. в разделе "Проверка подлинности в качестве приложения GitHub".
Шаг 5. Вы увидите новое вложение содержимого в ссылке в комментарии к запросу на вытягивание или проблеме:
Использование вложений содержимого в GraphQL
Мы предоставляем событие node_id веб-перехватчика content_reference, чтобы можно было ссылаться на изменения createContentAttachment в API GraphQL.
{% data reusables.pre-release-program.corsair-preview %} {% data reusables.pre-release-program.api-preview-warning %}
Пример:
mutation {
createContentAttachment(input: {
contentReferenceId: "MDE2OkNvbnRlbnRSZWZlcmVuY2UxNjA1",
title: "[A-1234] Error found in core/models.py file",
body:"You have used an email that already exists for the user_email_uniq field.\n ## DETAILS:\n\nThe (email)=(Octocat@github.com) already exists.\n\n The error was found in core/models.py in get_or_create_user at line 62.\n\n self.save()"
}) {
contentAttachment {
... on ContentAttachment {
id
title
body
}
}
}
}
Пример cURL:
curl -X "POST" "{% data variables.product.api_url_code %}/graphql" \
-H 'Authorization: Bearer $INSTALLATION_TOKEN' \
-H 'Accept: application/vnd.github.corsair-preview+json' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"query": "mutation {\\n createContentAttachment(input:{contentReferenceId: \\"MDE2OkNvbnRlbnRSZWZlcmVuY2UxNjA1\\", title:\\"[A-1234] Error found in core/models.py file\\", body:\\"You have used an email that already exists for the user_email_uniq field.\n ## DETAILS:\n\nThe (email)=(Octocat@github.com) already exists.\n\n The error was found in core/models.py in get_or_create_user at line 62.\n\n\self.save()\\"}) {\\n contentAttachment {\\n id,\\n title,\\n body\\n }\\n }\\n}"
}'
Дополнительные сведения о node_id см. в разделе "Использование идентификаторов глобальных узлов".
Пример использования Probot и манифестов приложений GitHub
Чтобы быстро настроить приложение GitHub, которое может использовать API {% data variables.product.prodname_unfurls %}, можно использовать Probot. Сведения о том, как Probot использует манифест GitHub, см. в разделе "Создание приложений GitHub из манифеста".
Чтобы создать приложение Probot, выполните следующие действия.
-
Откройте созданный проект и настройте параметры в файле
app.yml. Подпишитесь на событиеcontent_referenceи включите разрешения на записьcontent_references:default_events: - content_reference # The set of permissions needed by the GitHub App. The format of the object uses # the permission name for the key (for example, issues) and the access type for # the value (for example, write). # Valid values are `read`, `write`, and `none` default_permissions: content_references: write content_references: - type: domain value: errors.ai - type: domain value: example.org -
Добавьте этот код в файл
index.jsдля обработки событийcontent_referenceи вызова REST API:module.exports = app => { // Your code here app.log('Yay, the app was loaded!') app.on('content_reference.created', async context => { console.log('Content reference created!', context.payload) // Call the "Create a content reference" REST endpoint await context.github.request({ method: 'POST', headers: { accept: 'application/vnd.github.corsair-preview+json' }, url: `/repos/${context.payload.repository.full_name}/content_references/${context.payload.content_reference.id}/attachments`, // Parameters title: '[A-1234] Error found in core/models.py file', body: 'You have used an email that already exists for the user_email_uniq field.\n ## DETAILS:\n\nThe (email)=(Octocat@github.com) already exists.\n\n The error was found in core/models.py in get_or_create_user at line 62.\n\nself.save()' }) }) } -
Запустите приложение GitHub локально. Перейдите к разделу
http://localhost:3000и нажмите кнопку Зарегистрировать приложение GitHub: -
Установите приложение в тестовом репозитории.
-
Создайте проблему в тестовом репозитории.
-
Добавьте комментарий к открытой проблеме, которая содержит URL-адрес, настроенный в файле
app.yml. -
Ознакомьтесь с комментарием, и вы увидите обновление, которое выглядит следующим образом:


