diff --git a/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 b/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 index f64f29a..8d70be1 100644 --- a/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 +++ b/ApiGit/ApiGitResources/ApiScriptsConfig.ps1 @@ -25,7 +25,7 @@ $tokenNembro = "glpat--9NqsusKLmHdF8z1kU9t" #access token per autenticazione gitlab-nembro $nembroHead = @{"PRIVATE-TOKEN" = "$($tokenNembro)" } -#### CONF gitea.steamware.net #### +#### CONF gitea-nembro.steamware.net #### #destinazione mirror per gitea $giteaNembro = "gitea-nembro.steamware.net" #nome utente gitea che effettua i mirror push diff --git a/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 b/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 index 44bdba9..1373334 100644 --- a/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 +++ b/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 @@ -62,6 +62,7 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) { #chiamo funzione per creare mirror verso gitea-steamware FreshMirrorCreation $projectCount $giteaSteamwUser $giteaSteamwPass $giteaSteamw $simplePath } + #se la risposta non contiene "gitea-nembro" procedo a creare mirror relativo if ($gitlabResponse.Content -inotmatch "gitea-nembro.steamware.net") { #chiamo funzione per creare mirror verso gitea-nembro FreshMirrorCreation $projectCount $giteaNembroUser $giteaNembroPass $giteaNembro $simplePath @@ -71,16 +72,16 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) { #chiamo funzione per creare mirror verso gogs FreshMirrorCreation $projectCount $gogsUser $gogsPass $gogsDestination $simplePath } - #se la risposta non contiene "gitlab-nembro" procedo a creare mirror relativo - if ($gitlabResponse.Content -inotmatch "gitlab-nembro") { - #chiamo funzione per creare mirror verso gitlab-nembro - FreshMirrorCreation $projectCount $userName $tokenNembro $destinationNembro $simplePath - } #se la risposta non contiene "gitlab-azzano" procedo a creare mirror relativo if ($gitlabResponse.Content -inotmatch "gitlab-azzano") { #chiamo funzione per creare mirror verso gitlab-azzano FreshMirrorCreation $projectCount $userName $tokenAzzano $destinationAzzano $simplePath } + #OLD: se la risposta non contiene "gitlab-nembro" procedo a creare mirror relativo + #if ($gitlabResponse.Content -inotmatch "gitlab-nembro") { + # #chiamo funzione per creare mirror verso gitlab-nembro + # FreshMirrorCreation $projectCount $userName $tokenNembro $destinationNembro $simplePath + #} } #scrivo se trovo un errore durante il try/catch catch { diff --git a/ApiGit/Mirrors/GitlabDELETEMirrors.ps1 b/ApiGit/Mirrors/GitlabDELETEMirrors.ps1 new file mode 100644 index 0000000..5c280a3 --- /dev/null +++ b/ApiGit/Mirrors/GitlabDELETEMirrors.ps1 @@ -0,0 +1,88 @@ +###Gitlab: delete mirrors### + +#Questo script passa in rassegna tutti i progetti esistenti sul gitlab aziendale e per ognuno può cancellare i mirror desiderati + +#IMPORTANTE: SCRIPT PERICOLOSO. TOGLIERE COMMENTO A RIGA 60 PER CANCELLARE. + +#importo file contenente configurazioni +. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1 +#importo file contenente funzioni +. .\ApiGit\ApiGitResources\ApiScriptsFunctions.ps1 + +#rilevo time per log inizio analisi +$startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") +# avvio stopwatch +$mainStopWatch = [system.diagnostics.stopwatch]::StartNew() +#contatore ciclo do while +$startProj = 1 +#numero massimo di progetti da analizzare +$endProj = 250 +#nome file di log +$logFile = "MirrorsDelete.log" +#nome file di log old +$oldLogFile = "MirrorsDelete.old" +#stringa da cercare per cancellare il mirror +$mirrorToDelete = "gitlab-nembro" + +#creazione folder di Log se non esiste +CheckLogFolder + +#rotazione vecchio logFile da .log a .old se esiste +RotateOldLog + +#scrivo intestazione e inizio analisi +WriteLogOutput $logFile 0 "--------------------" +Switch ($logLevel) { + 0 { WriteLogOutput $logFile 0 "LOG SINTETICO DELETE MIRROR" } + 1 { WriteLogOutput $logFile 0 "LOG ERRORI DELETE MIRROR" } + 2 { WriteLogOutput $logFile 0 "LOG FULL DELETE MIRROR" } + 3 { WriteLogOutput $logFile 0 "LOG AMPOLLOSO DELETE MIRROR" } +} +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Percorso log: $logFolder" +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Inizio Esecuzione Script: $startTime" + +#ciclo principale for che cicla da 1 a N projectNumber +for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) { + $callUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/remote_mirrors" + try { + $gitlabResponse = Invoke-WebRequest -URI $callUrl -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + $parsedGitlabResponse = $gitlabResponse.Content | ConvertFrom-Json + #scrivo il numero del progetto nel terminale e su file + WriteLogOutput $logFile 1 "" + WriteLogOutput $logFile 1 "--------------------" + WriteLogOutput $logFile 1 "**PROGETTO $projectCount**" + foreach ($gitResponse IN $parsedGitlabResponse){ + if ($gitResponse -match $mirrorToDelete) { + #Cancello mirror verso gitlab-nembro + $deleteUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/remote_mirrors/" + $gitResponse.id + #Invoke-WebRequest -URI $deleteUrl -Method DELETE -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + WriteLogOutput $logFile 1 "Eliminato mirror: $gitResponse" + } + } + } + #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) + } +} +#fine ciclo principale + +# fermo stopwatch e calcolo durata script +$mainStopWatch.Stop() +$durataScript = $mainStopWatch.Elapsed.TotalSeconds + +#rilevo time per log fine analisi +$endTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") + +#scrivo a video le statistiche +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Fine Esecuzione Script: $endTime" +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Durata Esecuzione Script: $durataScript secondi" +WriteLogOutput $logFile 0 "" \ No newline at end of file