Githubスニペット [非推奨]
重要
サードパーティ サービスとプッシュ通知の廃止
Atlas App Services のサードパーティ サービスとプッシュ通知は非推奨となり、代わりに関数内の外部依存関係を使用する HTTP エンドポイントを作成できるようになりました。
Webhook はHTTPS endpointsに名前変更され、動作は変更されません。 既存の Webhook を移行する必要があります。
既存のサービスは、 30、2025 まで引き続き機能します。
サードパーティ サービスとプッシュ通知は非推奨になったため、App Services UI からデフォルトで削除されました。 既存のサードパーティ サービスまたはプッシュ通知を管理する必要がある場合は、次の操作を実行して構成を UI に追加できます。
左側のナビゲーションの [ App Settings Manageセクションの下にある [] をクリックします。
Temporarily Re-Enable 3rd Party Servicesの横にあるトグル スイッチを有効にし、変更を保存します。
Overview
このページ カバーのコードGithub スニペットは、Github Service を通じて リポジトリ内のイベントに応答する方法を示します。すべてのスニペットには、スニペットで使用されるサービス アクションを許可するルールを持つGithub Service インターフェースが必要です。
アプリに Github Service インターフェースがない場合は、これらのスニペットを使用する前にGithub Service インターフェースを作成してください。
MongoDB でのすべてのコミットのログ
このGithub 受信 Webhook MongoDB関数は、 pushEvent に基づいて のリポジトリにプッシュされたすべてのコミットを記録します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) } };
新しいプルリクエストに自動的にコメントを付ける
このGithub受信 Webhook関数は、ユーザーの送信に貢献する新しいプル リクエストにコメントを追加します。 Webhook は PullRequestEvent を受け入れますGithub からのペイロードとHTTP Service クライアントを 使用してコメントを作成する GithubAPIを通じて。
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); } };