(gas) 更新履歴が出るようにした

This commit is contained in:
kakkokari-gtyih 2023-12-24 15:51:31 +09:00
parent cee4e6b6e7
commit 01dd0ba750

View File

@ -1,6 +1,4 @@
// プログラムを変更したら都度「デプロイ」を行うこと // 変更したら「デプロイ」を行うこと
// スクリプト プロパティを取得
const env = PropertiesService.getScriptProperties().getProperties(); const env = PropertiesService.getScriptProperties().getProperties();
// Misskey // Misskey
@ -10,7 +8,9 @@ const MI_API_TOKEN = env.MISSKEY_API_TOKEN ?? null;
const CF_API_TOKEN = env.CF_API_TOKEN ?? null; const CF_API_TOKEN = env.CF_API_TOKEN ?? null;
const CF_ZONE_ID = env.CF_ZONE_ID ?? null; const CF_ZONE_ID = env.CF_ZONE_ID ?? null;
// Webhook受信時のハンドラ // Github 前のコミットSHA
const GH_PREVIOUS_COMMIT_SHA = env.GH_PREVIOUS_COMMIT_SHA ?? null;
function doPost(e) { function doPost(e) {
const params = JSON.parse(e.postData.getDataAsString()); const params = JSON.parse(e.postData.getDataAsString());
@ -26,15 +26,29 @@ function doPost(e) {
// デプロイされたことをMisskeyに通知する // デプロイされたことをMisskeyに通知する
if (MI_API_TOKEN) { if (MI_API_TOKEN) {
postToMisskey(params); setTimeout(() => postToMisskey(params), 5000);
} }
// 今回のSHAを保存
PropertiesService.getScriptProperties().setProperty('GH_PREVIOUS_COMMIT_SHA', params.deployment.sha);
}
function getChangeLog(d) {
if (!GH_PREVIOUS_COMMIT_SHA) return null;
const res = JSON.parse(UrlFetchApp.fetch(`https://api.github.com/repos/misskey-dev/misskey-hub-next/compare/${GH_PREVIOUS_COMMIT_SHA}...${d.deployment.sha}`).getContentText());
return res.commits.map((commit) => `・${commit.commit.message.split('\n')[0]}`).reverse().join('\n');
} }
function postToMisskey(d) { function postToMisskey(d) {
var data = { var data = {
i: MI_API_TOKEN, i: MI_API_TOKEN,
text: `$[tada 📢] **Misskey Hub が更新されました!** text: `$[tada 📢] **Misskey Hub が更新されました!**
早速チェックしましょう ▶ ${d?.repository?.homepage ?? 'https://misskey-hub.net/'}`, 早速チェックしましょう ▶ ${d?.repository?.homepage ?? 'https://misskey-hub.net/'}
**【今回の更新点】**
${getChangeLog(d) ?? "取得できませんでした…"}`,
visibility: 'public', visibility: 'public',
cw: null, cw: null,
localOnly: false, localOnly: false,