improved script per rimuovere protezione branch su nembro/azzano

This commit is contained in:
marco.locatelli@steamware.net
2025-06-19 10:24:43 +02:00
parent db43d8b2cd
commit 200fb08bf9
5 changed files with 61 additions and 54 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$projectCount = 1
#numero massimo di progetti da analizzare
$projectNumber = 250
$projectNumber = 300
#conteggio progetti trovati
$projectsFound = 0
#conteggio progetti con commit negli ultimi giorni
+3 -3
View File
@@ -15,7 +15,7 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$projectCount = 1
#numero massimo di progetti da analizzare
$projectNumber = 300
$projectNumber = 250
#conteggio progetti trovati
$existingProjects = 0
#conteggio mirroring in errore
@@ -58,12 +58,12 @@ do {
$parsedResponse = $Response.Content | ConvertFrom-Json
#scrivo il numero del progetto nel terminale e su file
foreach ($item in $parsedResponse) {
#verifico se i mirroring trovati per il progetto corrente hanno status "finished"
#verifico se i mirroring trovati per il progetto corrente hanno status "finished" e scrivo log
if ($item.update_status.Equals("finished")) {
WriteLogOutput $logFile 2 "Mirror: $($item.url) - Status: $($item.update_status) - Last Success: $($item.last_successful_update_at)"
$mirrorSuccessCount = $mirrorSuccessCount + 1
}
#i mirroring che non hanno status "finished" vengono loggati con relativo errore
#per i mirroring che non hanno status "finished" scrivo log con relativo errore
else {
WriteLogOutput $logFile 1 "Mirror: $($item.url) - Status: $($item.update_status) - Last Success: $($item.last_successful_update_at) - Last Attempt: $($item.last_update_started_at)"
WriteLogOutput $logFile 1 "Error: $($item.last_error)"
@@ -17,7 +17,7 @@ $projectCount = 200
#numero massimo di progetti da analizzare
$projectNumber = 250
#nome file di log
$logFile = "GiteaNewMirrors.log"
$logFile = "NewMirrorsCreation.log"
#creazione folder di Log se non già esistente
if (Test-Path $logFolder) {
+53 -46
View File
@@ -13,7 +13,7 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# avvio stopwatch
$mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$projectCount = 200
$projectCount = 1
#numero massimo di progetti da analizzare
$projectNumber = 300
#conteggio progetti trovati
@@ -25,19 +25,6 @@ $deleteProtection = 1
#nome file di log
$logFile = "GitlabProtectedBranches.log"
#specifica quale installazione di gitlab va controllata
$remote = "Nembro"
#$remote = "Azzano"
if ($remote -eq "Nembro"){
$gitlabIstance = $destinationNembro
$head = $nembroHead
}
if ($remote -eq "Azzano"){
$gitlabIstance = $destinationAzzano
$head = $azzanoHead
}
#creazione folder di Log se non già esistente
if (Test-Path $logFolder) {
}
@@ -60,42 +47,62 @@ WriteLogOutput $logFile 0 "Inizio Esecuzione Script: $startTime"
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Gitlab di Destinazione: $gitlabIstance"
#ciclo principale do/while che cicla da 1 a N projectNumber
do {
#chiamata api che restituisce informazioni sullo stato dei mirror
$callUrl = "https://" + $gitlabIstance + "/api/v4/projects/" + $projectCount + "/protected_branches"
try {
#parsing della risposta api convertita da json
$Response = Invoke-WebRequest -URI $callUrl -Headers $head -ContentType "application/json" -UseBasicParsing
$parsedResponse = $Response.Content | ConvertFrom-Json
#scrivo il numero del progetto
WriteLogOutput $logFile 1 ""
WriteLogOutput $logFile 1 "--------------------"
WriteLogOutput $logFile 1 "**PROGETTO $projectCount**"
foreach ($item in $parsedResponse) {
WriteLogOutput $logFile 1 "Protected Branch Name: $($item.name) - Allow Force Push: $($item.allow_force_push)"
$protectedProjects = $protectedProjects + 1
if ($deleteProtection -eq 1) {
#nuovo URL x delete
$callUrlDelete = "https://" + $gitlabIstance + "/api/v4/projects/" + $projectCount + "/protected_branches/" + $item.name
#chiamo method DELETE
Invoke-WebRequest -Method Delete -URI $callUrlDelete -Headers $head -ContentType "application/json" -UseBasicParsing
#specifica quale installazione di gitlab va controllata
#$remote = "Nembro"
#$remote = "Azzano"
$locations = @('Nembro','Azzano')
#ciclo for per lavorare su gitlab nembro e poi su gitlab azzano
for ( $i = 0; $i -le 1; $i++)
{
$projectCount = 1
$remote = $locations[$i]
if ($remote -eq "Nembro"){
$gitlabIstance = $destinationNembro
$head = $nembroHead
}
if ($remote -eq "Azzano"){
$gitlabIstance = $destinationAzzano
$head = $azzanoHead
}
#ciclo principale do/while che cicla da 1 a N projectNumber
do {
#chiamata api che restituisce informazioni sullo stato dei mirror
$callUrl = "https://" + $gitlabIstance + "/api/v4/projects/" + $projectCount + "/protected_branches"
try {
#parsing della risposta api convertita da json
$Response = Invoke-WebRequest -URI $callUrl -Headers $head -ContentType "application/json" -UseBasicParsing
$parsedResponse = $Response.Content | ConvertFrom-Json
#scrivo il numero del progetto
WriteLogOutput $logFile 1 ""
WriteLogOutput $logFile 1 "--------------------"
WriteLogOutput $logFile 1 "**PROGETTO $projectCount**"
foreach ($item in $parsedResponse) {
WriteLogOutput $logFile 1 "Protected Branch Name: $($item.name) - Allow Force Push: $($item.allow_force_push)"
$protectedProjects = $protectedProjects + 1
if ($deleteProtection -eq 1) {
#nuovo URL x delete
$callUrlDelete = "https://" + $gitlabIstance + "/api/v4/projects/" + $projectCount + "/protected_branches/" + $item.name
#chiamo method DELETE
Invoke-WebRequest -Method Delete -URI $callUrlDelete -Headers $head -ContentType "application/json" -UseBasicParsing
}
}
$existingProjects = $existingProjects + 1
}
$existingProjects = $existingProjects + 1
#scrivo se trovo un errore durante il try/catch
catch {
$parsedError = $_ | ConvertFrom-Json
WriteLogOutput $logFile 3 ""
WriteLogOutput $logFile 3 "--------------------"
WriteLogOutput $logFile 3 "**ERRORE NEL PROGETTO $projectCount**"
WriteLogOutput $logFile 3 $($parsedError.message)
}
$projectCount = $projectCount + 1
}
#scrivo se trovo un errore durante il try/catch
catch {
$parsedError = $_ | ConvertFrom-Json
WriteLogOutput $logFile 3 ""
WriteLogOutput $logFile 3 "--------------------"
WriteLogOutput $logFile 3 "**ERRORE NEL PROGETTO $projectCount**"
WriteLogOutput $logFile 3 $($parsedError.message)
}
$projectCount = $projectCount + 1
#fine ciclo principale
while ($projectCount -le $projectNumber)
}
#fine ciclo principale
while ($projectCount -le $projectNumber)
# fermo stopwatch e calcolo durata script
$mainStopWatch.Stop()
@@ -15,13 +15,13 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$projectCount = 200
#numero massimo di progetti da analizzare (messo a 1 per "sicura inserita" siccome questo script è potenzialmente pericoloso)
$projectNumber = 300
$projectNumber = 250
#nome file di log
$logFile = "AzzanoNembroReposCreation.log"
#specifica quale installazione di gitlab va controllata
$remote = "Nembro"
#$remote = "Azzano"
#$remote = "Nembro"
$remote = "Azzano"
if ($remote -eq "Nembro"){
$gitlabIstance = $destinationNembro