Trechos Github [Obsoleto]
Nesta página
Importante
Suspensão de serviços de terceiros e notificações push
Os serviços de terceiros e as notificações por push no App Services foram preteridos em favor da criação de pontos de extremidade HTTP que usam dependências externas em funções.
Webhooks foram renomeados e agora são chamados de pontos de conexão HTTPS sem nenhuma alteração em seu comportamento. Recomendamos migrar webhooks existentes.
Os serviços existentes continuarão a funcionar até de setembro 30 de2025.
Como os serviços de terceiros e as notificações por push agora estão obsoletos, eles foram removidos por padrão da UI do App Services. Para gerenciar um serviço de terceiros ou uma notificação por push existente, adicione as configurações de volta à UI fazendo o seguinte:
Na navegação à esquerda, na seção Manage, clique em App Settings.
Ative a chave de alternância ao lado de Temporarily Re-Enable 3rd Party Services e salve as alterações.
Visão geral
Os trechos de código nesta página demonstram como você pode responder a eventos em um repositório GitHub por meio do Serviço GitHub. Todos os trechos exigem uma interface do Github Service com regras que permitem a ação de serviço usadas no trecho.
Se seu aplicativo não tiver uma interface de serviço do Github, crie uma antes de usar esses trechos.
Registrar todos os commits no MongoDB
Essa função Github de webhook de entrada do registra todos os commits enviados para um repositório no MongoDB com base em um PushEvent carga útil do Github.
exports = async function(pushEvent) { // Parse the list of commits from the PushEvent payload. // Also grab the user that pushed the commits and the repo information. const { commits, pusher, repository } = pushEvent; // Create a new array of log documents, one for each commit const commitLogs = commits.map(commit => { return { commit: commit, pushed_by: pusher, repo: { name: repository.name, url: repository.url } } }) // Get a client for the `GitHubRepo.logs` collection in MongoDB const mongodb = context.services.get("mongodb-atlas"); const logs = mongodb.db("GitHubRepo").collection("commit-logs"); // Insert the log documents in MongoDB try { const insertResult = await logs.insertMany(commitLogs) console.log(insertResult.insertedIds); } catch(err) { console.error(err) } };
Comentar automaticamente em novas solicitações pull
Esta função de webhook de entrada doGithub adiciona um comentário às novas solicitações pull que agradece aos usuários pelo envio. O webhook aceita um pullRequestEvent carga útil do Github e usa um HTTP Service cliente Github APIde para criar um comentário por meio da do .
exports = async function(pullRequest) { // Get information about the PR from the PullRequestEvent const { action, repository, pull_request: pr } = pullRequest; // Only run if this is a new PR if (action !== "opened") { return } // Construct the GitHub API URL for this PR's Comments const pr_comments_url = { scheme: "https", host: "api.github.com", path: `/repos/${repository.owner.login}/${repository.name}/issues/${pr.number.$numberInt}/comments`, }; // Specify GitHub API Basic Authentication Fields and Headers const github_basic_auth = { username: context.values.get("github-credentials").username, password: context.values.get("github-credentials").password, }; const headers = { // OPTIONAL: Include this header if your security settings require a 2fa code "X-GitHub-OTP": ["<2fa Code>"] }; // Specify the comment text const body = EJSON.stringify({ body: `Thank you for submitting a pull request, ${pr.user.login}!` }); try { // Get an HTTP service client. The service rules should allow you // to send POST requests to `https://api.github.com`. const http = context.services.get("<HTTP Service Name>"); // Send the Request to GitHub const request = { ...github_basic_auth, ...pr_comments_url, headers, body }; const result = await http.post(request); // Check for a Successful Result if (result.statusCode == 201) { return "Successfully commented on the pull request!"; } else { throw new Error(`Received a bad result status from GitHub: ${result.body.text()}`); } } catch (err) { console.error("Something went wrong while posting the comment.", err); } };