Как обновить пул-запрос по GitHub APP API? - PullRequest
0 голосов
/ 20 апреля 2020

Я разработал GitHub APP для управления процессом запросов на извлечение, я использую два API
1. API проверки статусов
2. API-интерфейс update-a-pull-request
Я получаю это сообщение об ошибке при запросе на обновление существующего пул-запроса, созданного одним из пользователей.

Как получить токен установки с нужными разрешениями?

{
  "message": "Validation Failed",
  "errors": [
    {
      "message": "Only the pull request author may change the maintainer_can_modify value",
      "resource": "PullRequest",
      "field": "maintainer_can_modify",
      "code": "invalid"
    }
  ],
  "documentation_url": "https://developer.github.com/v3/pulls/#update-a-pull-request"
}

Чтобы выполнить вызов API, мне нужен токен, я сгенерировал токен следующим образом:

  • Создано приложение в учетной записи GitHub

  • Создано закрытый ключ PEM в приложении

  • В коде , создал токен JWT с помощью ключа PEM

  • Используя токен JWT для создания токена установки, как показано ниже

Заголовок

function generateJwtToken() {
    return jsonwebtoken.sign(
        {
            iat: Math.floor(new Date() / 1000),
            exp: Math.floor(new Date() / 1000) + 60,
            iss: ISSUER_ID,
        },
        PEM,
        {algorithm: 'RS256'},
    );
}
let githubHeadersToAccessToken = {
    'User-Agent': 'nodejs',
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + generateJwtToken(),
    'Accept': 'application/vnd.github.machine-man-preview+json'
};

Получить токен установки

payloadToken = {
    "repository_ids": [
    ],
    "permissions": {
        "pull_requests": "write",
        "statuses": "write",
        "administration" : "write",
        "organization_administration": "write",
        "contents": "write",
        "team_discussions": "write",
    }
};
request.get({
    url: 'https://api.github.com/app/installations',
    headers: githubHeadersToAccessToken
}, function optionalCallback(err, httpResponse, body) {
    if (err) {
        return console.error('Connected App get token failed:', err);
    }
    console.log('APP Installation id');
    console.log('Installation id: ' + JSON.parse(body)[0].id);
    app_installed_id = JSON.parse(body)[0].id;

    request.post({
        url: 'https://api.github.com/app/installations/'+app_installed_id+'/access_tokens',
        headers: githubHeadersToAccessToken,
        json: payloadToken
    }, function optionalCallback(err, httpResponse, body) {
        if (err) {
            return console.error('Failed to get access token to GitHub: ', err);
        }
        //console.log(body);
        console.log('Access token to GitHub: ' + body.token);
    });
});

Обновление существующего запроса извлечения, созданного одним из пользователей

   request.post({
        url: 'https://api.github.com/repos/'+owner+'/'+repo+'/statuses/'+sha,
        headers: githubHeadersApiV3,
        json: {
            "state": status,
            "context": "PR <> GUS Validation"
        }
    }, function optionalCallback(err, httpResponse, body) {
        if (err) {
            return console.error('Connected App get token failed:', err);
        }
        //console.log(body);
        console.log('commit sha: ' + sha + ' updated with status: ' + status);
    });

1 Ответ

0 голосов
/ 23 апреля 2020

Я хочу обновить, чтобы код работал, я могу обновить pull-запрос, используя Github APP.
Проблема, о которой я упоминал, возникает, когда я пытаюсь изменить "keeper_can_modify" в запросе pull, что не разрешено, только владельцем тогда я просто убрал его. Но в моем случае я хотел добавить комментарий, изменить заголовок и т. Д. c ..

Я оставлю этот вопрос в качестве примера для построения приложения GitHub для обновления пул-запроса с использованием NodeJS.

...