您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a floating button to GitHub Actions run pages to retry all jobs with one click
// ==UserScript== // @name GitHub Actions Retry Floating Button // @namespace http://tampermonkey.net/ // @version 1.0.1 // @description Adds a floating button to GitHub Actions run pages to retry all jobs with one click // @match https://github.com/*/actions/runs/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // Create the button const btn = document.createElement('button'); btn.textContent = 'Retry Failed Jobs'; btn.style.position = 'fixed'; btn.style.bottom = '30px'; btn.style.right = '30px'; btn.style.padding = '14px 24px'; btn.style.zIndex = '10000'; btn.style.background = '#28a745'; btn.style.color = '#fff'; btn.style.border = 'none'; btn.style.borderRadius = '99px'; btn.style.boxShadow = '0 2px 12px rgba(0,0,0,0.15)'; btn.style.fontSize = '1.1em'; btn.style.cursor = 'pointer'; btn.style.transition = 'background 0.2s'; btn.addEventListener('mouseenter', () => btn.style.background = '#218838'); btn.addEventListener('mouseleave', () => btn.style.background = '#28a745'); // Retry function btn.onclick = async () => { // Look for all "Re-run jobs" buttons and click them const menuButton = Array.from(document.querySelectorAll('button')) .filter(btn => /Re-run jobs/i.test(btn.textContent) && btn.offsetParent !== null)[0]; if (!menuButton) { alert('No "Re-run jobs" button found on this page.'); return; } menuButton.click(); const retryButton = Array.from(document.querySelectorAll('button')) .filter(btn => /Re-run failed jobs/i.test(btn.textContent))[0]; if (!retryButton) { alert('No "Re-run failed jobs" button found on this page.'); return; } retryButton.click(); const dialogRetryButton = Array.from(document.querySelector('#rerun-dialog-failed').querySelectorAll('button')).filter(btn => /Re-run jobs/i.test(btn.textContent))[0]; if (!dialogRetryButton) { alert('No "Re-run jobs" dialog button found on this page.'); return; } dialogRetryButton.click(); }; document.body.appendChild(btn); })();