Docs Menu
Docs Home
/ /
サードパーティー サービス

Githubスニペット

重要

サードパーティ サービスとプッシュ通知の廃止

Atlas App Services のサードパーティ サービスとプッシュ通知は非推奨となり、代わりに関数内の外部依存関係を使用する HTTP エンドポイントを作成できるようになりました。

Webhook はHTTPS endpointsに名前変更され、動作は変更されません。 既存の Webhook を移行する必要があります。

既存のサービスは、 30、2025 まで引き続き機能します。

サードパーティ サービスとプッシュ通知は非推奨になったため、App Services UI からデフォルトで削除されました。 既存のサードパーティ サービスまたはプッシュ通知を管理する必要がある場合は、次の操作を実行して構成を UI に追加できます。

  • 左側のナビゲーションの [ App Settings Manageセクションの下にある [] をクリックします。

  • Temporarily Re-Enable 3rd Party Servicesの横にあるトグル スイッチを有効にし、変更を保存します。

このページ カバーのコードGithub スニペットは、Github Service を通じて リポジトリ内のイベントに応答する方法を示します。すべてのスニペットには、スニペットで使用されるサービス アクションを許可するルールを持つGithub Service インターフェースが必要です。

アプリに Github Service インターフェースがない場合は、これらのスニペットを使用する前にGithub Service インターフェースを作成してください。

このGithub受信 Webhook 関数は、 Githubからの プッシュイベント ペイロードに基づいて、 MongoDBのリポジトリにプッシュされたすべてのコミットを記録します。

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 はGithubから PullRequestEvent ペイロードを受け入れ、 HTTP Serviceクライアントを使用してGithub APIからコメントを作成します。

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);
}
};

戻る

Amazon Web Services S3 サービススニペット

項目一覧