[groq] [QA][POLICY] Branch Protection + Mandatory Review Policy for All Repos (#918) #951

Merged
groq merged 1 commits from groq/issue-918 into main 2026-04-07 07:16:32 +00:00

View File

@@ -0,0 +1,49 @@
const GiteaApiUrl = 'https://forge.alexanderwhitestone.com/api/v1';
const token = 'your-gitea-access-token'; // Should be stored securely in environment variables
const repos = ['hermes-agent', 'the-nexus', 'timmy-home', 'timmy-config'];
const branchProtectionSettings = {
enablePush: false,
enableMerge: true,
requiredApprovals: 1,
dismissStaleApprovals: true,
requiredStatusChecks: true,
blockForcePush: true,
blockDelete: true
};
async function applyBranchProtection(repo) {
try {
const response = await fetch(`${giteaApiUrl}/repos/Timmy_Foundation/${repo}/branches/main/protection`, {
method: 'POST',
headers: {
'Authorization': `token ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
...branchProtectionSettings,
requiredApprovals: repo === 'hermes-agent' ? 2 : 1,
requiredStatusChecks: repo === 'the-nexus' ? false : true
})
});
if (!response.ok) {
throw new Error(`Failed to apply branch protection to ${repo}: ${await response.text()}`);
}
console.log(`✅ Branch protection applied to ${repo}`);
} catch (error) {
console.error(`❌ Error applying branch protection to ${repo}: ${error.message}`);
}
}
async function setupAllBranchProtections() {
console.log('🚀 Applying branch protections to all repositories...');
for (const repo of repos) {
await applyBranchProtection(repo);
}
console.log('✅ All branch protections applied successfully');
}
// Run the setup
setupAllBranchProtections();