全自动填写及更新secrets,方便省事,使用时需要自己在代码里添加secrets
// ==UserScript== // @name GitHub Actions secrets 自动填写及更新 // @namespace http://tampermonkey.net/ // @version 0.1.6 // @description 全自动填写及更新secrets,方便省事,使用时需要自己在代码里添加secrets // @author Aerozb // @match https://github.com/*/settings/secrets/actions* // @grant none // ==/UserScript== (function () { 'use strict'; console.clear(); let env = new Object(); /* 需要你在此注释以下面添加secrets 格式: env.机密名 = ‘机密值',如有多个机密值请使用&符号分开 示例: 一个账号cookie: env.JD_COOKIE = 'cookie1'; 4个账号cookie:env.JD_COOKIE = 'cookie1&cookie2&cookie3&cookie4'; 互助码:如果n个账号之间需要互助,互助码请填写n遍,2个账号东东农场互助码填写如下 env.FRUITSHARECODES = '账号一互助码@账号二互助码&账号一互助码@账号二互助码'; 机密值 格式都跟lxk格式一样 请务必保存好自己填写的secrets, 因为此脚本更新, 会覆盖, 你填写的就没了 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ //示例 env.PET_NOTIFY_CONTROL = 'true'; //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ let envKeys = []; for (let key in env) { envKeys.push(key); } localStorage.setItem("env", env); localStorage.getItem("env"); let keyLen = envKeys.length; let index = localStorage.getItem("index"); let url = window.location.href; //通过截取URL斜杠后的字符串,判断当前页,是添加还是修改或者secret页面 let suffix = url.substr(url.lastIndexOf('/') + 1); //在secret页面才进行失败的secret判断 if (isSecretPage()) { //判断是否有设置失败的secret let failedDiv = document.querySelectorAll("div"); let isDel = true; for (let i = 0; i < failedDiv.length; i++) { if (macth(failedDiv[i].innerHTML, 'Please try again')) { isDel = false; if (localStorage.getItem("resetSecret") == null) { localStorage.setItem("resetSecret", envKeys[index - 1]); } break; } } //成功设置,则移除resetSecret if (isDel) { localStorage.removeItem("resetSecret"); } } if (index == keyLen) { if (confirm("已设置完所有secrets或已设置完新增的secrets,是否从头开始设置")) { if (confirm("真的确定从头开始设置?")) { index = setIndex(index); } } } else if (!index || index > keyLen) { index = setIndex(index); } //获取设置失败的secret let resetSecret = localStorage.getItem("resetSecret"); if (isSecretPage()) { //获取页面secrets let keynameList = []; document.querySelectorAll("code").forEach(e => { if (macth(e.className, 'f5')) { keynameList.push(e.innerText); } }); //是否进入更新页 let isUpdate = false; //遍历页面secrets,进行下一步动作 for (let i = index; i < keyLen; i++) { for (let j = 0; j < keynameList.length; j++) { //先进入需要重新设置secret的修改页面 if (resetSecret != null) { if (resetSecret == keynameList[j]) { window.location.href += '/' + resetSecret; isUpdate = true; break; } } else { if (envKeys[i] == keynameList[j]) { localStorage.setItem("index", i); window.location.href += '/' + envKeys[i]; isUpdate = true; break; } } } if (isUpdate) { break; } window.location.href += '/new'; break; } } else if (macth(suffix, 'new')) { if (resetSecret == null) { document.querySelector("#secret_name").value = envKeys[index]; } // 处理设置失败的secret else { document.querySelector("#secret_name").value = resetSecret; } addOrUpadteValue(true); } else { addOrUpadteValue(false); } function addOrUpadteValue(isAdd) { //先处理设置失败的secret if (resetSecret != null) { document.querySelector("#secret_value").value = env[resetSecret]; } else if (isAdd) { document.querySelector("#secret_value").value = env[envKeys[index]]; } else { document.querySelector("#secret_value").value = env[suffix]; } localStorage.setItem("index", parseInt(index) + 1); let submit = document.querySelector(".form-group > button"); submit.removeAttribute("disabled"); submit.click(); } function macth(str, macthStr) { return str.indexOf(macthStr) != -1; } function setIndex(index) { localStorage.setItem("index", 0); index = localStorage.getItem("index"); return index; } function isSecretPage() { return macth(suffix, 'actions') || suffix == ''; } })();