您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Trigger deployment or repository_dispatch event for Github Actions
当前为
// ==UserScript== // @name Github Deployments and Repository Dispatch Trigger // @version 0.2 // @description Trigger deployment or repository_dispatch event for Github Actions // @author Texot // @namespace https://github.com/tete1030/github-repo-dispatcher // @homepage https://github.com/tete1030/github-repo-dispatcher // @require https://code.jquery.com/jquery-latest.min.js // @match https://github.com/*/* // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; function ask_parameter(varid, prompt, save, allow_empty, skip) { if (skip && GM_getValue(varid, null) !== null) return GM_getValue(varid); let value = window.prompt(prompt, GM_getValue(varid, "")); if (value===null) throw null; if (!allow_empty && !value) { window.alert("Value should not be empty"); throw null; } if (save) GM_setValue(varid, value); return value; } function trigger_repo_dispatch() { let pathArray = window.location.pathname.split('/'); if (pathArray.length < 3) return; let token = ask_parameter("token", "Token", true, false); let type = ask_parameter("repo_dis_type", "Type", true); let payload = ask_parameter("repo_dis_payload", "Client Payload (in JSON)", true, true); let data = {event_type: type}; try { if (payload) data.client_payload = JSON.parse(payload); } catch (e) { window.alert("JSON parse failed: " + e.message); return; } GM_xmlhttpRequest({ method: "POST", url: "https://api.github.com/repos/" + pathArray[1] + "/" + pathArray[2] + "/dispatches", headers: {"Authorization": "token " + token, "Accept": "application/vnd.github.everest-preview+json"}, data: JSON.stringify(data), onload: (resp) => { if (resp.status == 204 || resp.status == 200) { console.log("Repo dispatch succeed: " + resp.responseText); window.alert("Repo dispatch succeed" + (resp.responseText?(": " + resp.responseText):"")); } else { var message = resp.responseText; try { message = JSON.parse(message).message; } catch (e) {} console.log("Repo dispatch failed: " + resp.responseText); window.alert("Repo dispatch failed: " + message); } }, onerror: (e) => { console.log("Repo dispatch failed: " + e); window.alert("Repo dispatch failed: " + e.message); } }); } function trigger_deployments() { let pathArray = window.location.pathname.split('/'); if (pathArray.length < 3) return; let token = ask_parameter("token", "Token", true, false); let ref = ask_parameter("deploy_ref", "Ref (Branch, Tag, Commit)", true); let task = ask_parameter("deploy_task", "Task", true); let payload = ask_parameter("deploy_payload", "Payload (in JSON)", true, true); let data = { ref: ref, auto_merge: false, task: task, required_contexts: [], description: "Created by Github Deployments and Repository Dispatch Trigger", payload: payload }; GM_xmlhttpRequest({ method: "POST", url: "https://api.github.com/repos/" + pathArray[1] + "/" + pathArray[2] + "/deployments", headers: {"Authorization": "token " + token, "Accept": "application/vnd.github.ant-man-preview+json"}, data: JSON.stringify(data), onload: (resp) => { if (resp.status == 201) { console.log("Create deployments succeed: " + resp.responseText); window.alert("Create deployments succeed" + (resp.responseText?(": " + resp.responseText):"")); } else { var message = resp.responseText; try { message = JSON.parse(message).message; } catch (e) {} console.log("Create deployments failed: " + resp.responseText); window.alert("Create deployments failed: " + message); } }, onerror: (e) => { console.log("Create deployments failed: " + e); window.alert("Create deployments failed: " + e.message); } }); } $(document).ready(() => { let repo_dis_btn = $("<a class='btn btn-sm'>Repo Dispatch</a>").on("click", trigger_repo_dispatch); let deployments_btn = $("<a class='btn btn-sm'>Deploy</a>").on("click", trigger_deployments); $(".pagehead-actions").eq(0).prepend($("<li></li>").append(repo_dis_btn)).prepend($("<li></li>").append(deployments_btn)); }); })();