From 0c7820d65b73a4b4c4c505e358799d048d32a953 Mon Sep 17 00:00:00 2001 From: "marco.locatelli@steamware.net" Date: Thu, 13 Feb 2025 09:50:35 +0100 Subject: [PATCH] TestingCheckJobArtifacts-unfinished --- .../UNFINISHED_CheckGitlabJobArtifact.ps1 | 114 ++++++++++++++++++ ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 | 4 +- ApiGit/Misc/CheckGitlabProtectedBranches.ps1 | 8 +- .../ReposCreationAzzanoNembro.ps1 | 10 +- ApiGit/ReposCreation/ReposCreationGitea.ps1 | 4 +- ApiGit/ReposCreation/ReposCreationGogs.ps1 | 4 +- 6 files changed, 129 insertions(+), 15 deletions(-) create mode 100644 ApiGit/JobArtifacts/UNFINISHED_CheckGitlabJobArtifact.ps1 diff --git a/ApiGit/JobArtifacts/UNFINISHED_CheckGitlabJobArtifact.ps1 b/ApiGit/JobArtifacts/UNFINISHED_CheckGitlabJobArtifact.ps1 new file mode 100644 index 0000000..4dc2646 --- /dev/null +++ b/ApiGit/JobArtifacts/UNFINISHED_CheckGitlabJobArtifact.ps1 @@ -0,0 +1,114 @@ +###Gitlab: controllo lo stato dei JobArtifacts dei singoli progetti### + +#Questo script passa in rassegna tutti i progetti esistenti sul gitlab aziendale e per ognuno verifica lo stato dei JobArtifacts, poi invia a zabbix le statistiche. +#Tendenzialmente ogni progetto dovrebbe avere 4 JobArtifacts abilitati: nembro, azzano, gitea, gogs + +#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 +$projectCount = 1 +#numero massimo di progetti da analizzare +$projectNumber = 1 +#conteggio progetti trovati +$existingProjects = 0 +#conteggio job trovati +$jobFound = 0 +#nome file di log +$logFile = "GitlabJobArtifacts.log" + +#creazione folder di Log se non già esistente +if (Test-Path $logFolder) { +} +else { + New-Item $logFolder -ItemType Directory +} + +#scrivo intestazione e inizio analisi +WriteLogOutput $logFile 0 "--------------------" +Switch ($logLevel) { + 0 { WriteLogOutput $logFile 0 "LOG SINTETICO GITLAB Job Artifacts" } + 1 { WriteLogOutput $logFile 0 "LOG ERRORI GITLAB Job Artifacts" } + 2 { WriteLogOutput $logFile 0 "LOG FULL GITLAB Job Artifacts" } + 3 { WriteLogOutput $logFile 0 "LOG AMPOLLOSO GITLAB Job Artifacts" } +} +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Percorso log: $logFolder" +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "Inizio Esecuzione Script: $startTime" + +#ciclo principale do/while che cicla da 1 a N projectNumber +do { + #chiamata api che restituisce informazioni sullo stato dei JobArtifacts + $callUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/jobs" + WriteLogOutput $logFile 1 "" + WriteLogOutput $logFile 1 "--------------------" + WriteLogOutput $logFile 1 "**PROGETTO $projectCount**" + try { + #parsing della risposta api convertita da json + $Response = Invoke-WebRequest -URI $callUrl -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + $parsedResponse = $Response.Content | ConvertFrom-Json + #scrivo il numero del progetto nel terminale e su file + $deleteAllUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/artifacts" + $deleteAllResponse = Invoke-WebRequest -URI $deleteAllUrl -Method DELETE -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + $parsedDeleteAllResponse = $deleteAllResponse.Content | ConvertFrom-Json + + #foreach ($item in $parsedResponse) { + # WriteLogOutput $logFile 1 "ID: $($item.id) | Creato il: $($item.created_at) | URL: $($item.web_url)" + # $projectJobFound = $projectJobFound + 1 + # $jobFound = $jobFound + 1 + #compongo chiamata api per erase job + #$eraseUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/jobs/" + $item.id + "/erase" + #$EraseResponse = Invoke-WebRequest -URI $eraseUrl -Method DELETE -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + #$parsedEraseResponse = $EraseResponse.Content | ConvertFrom-Json + #compongo chiamata api per delete all job artifacts in a project + # $deleteAllUrl = "https://gitlab.steamware.net/api/v4/projects/" + $projectCount + "/artifacts" + # $deleteAllResponse = Invoke-WebRequest -URI $deleteAllUrl -Method DELETE -Headers $gitlabHead -ContentType "application/json" -UseBasicParsing + # $parsedDeleteAllResponse = $deleteAllResponse.Content | ConvertFrom-Json + #} + #WriteLogOutput $logFile 1 "Job trovati per il progetto $($projectCount): $($projectJobFound)" + #$projectJobFound = 0 + $existingProjects = $existingProjects + 1 + } + #scrivo se trovo un errore durante il try/catch + catch { + $parsedError = $_ | ConvertFrom-Json + WriteLogOutput $logFile 3 $($parsedError.message) + } + $projectCount = $projectCount + 1 +} +#fine ciclo principale +while ($projectCount -le $projectNumber) + +# 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") + +#invio a zabbix le metriche rilevate tramite zabbix_sender.exe +#WriteLogOutput $logFile 0 "" +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.Projects -o $existingProjects +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.TotalJobArtifacts -o $JobArtifactsCount +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.SuccessJobArtifacts -o $JobArtifactsSuccessCount +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.ErrorsJobArtifacts -o $JobArtifactsErrorsCount +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.SuccessJobArtifactsPercent -o $JobArtifactsSuccessPercentage +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.ErrorsJobArtifactsPercent -o $JobArtifactsErrorsPercentage +#& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "IIS04" -k Gitlab.CheckJobArtifactsDuration -o $durataScript + +#scrivo a video le statistiche +WriteLogOutput $logFile 0 "" +WriteLogOutput $logFile 0 "PROGETTI ANALIZZATI: $existingProjects" +WriteLogOutput $logFile 0 "Job Artifacts TOTALI: $jobFound" +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 diff --git a/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 b/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 index 008b41f..5a302e8 100644 --- a/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 +++ b/ApiGit/Mirrors/GitlabCreateMissingMirrors.ps1 @@ -13,9 +13,9 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") # avvio stopwatch $mainStopWatch = [system.diagnostics.stopwatch]::StartNew() #contatore ciclo do while -$projectCount = 1 +$projectCount = 200 #numero massimo di progetti da analizzare -$projectNumber = 300 +$projectNumber = 250 #nome file di log $logFile = "GiteaNewMirrors.log" diff --git a/ApiGit/Misc/CheckGitlabProtectedBranches.ps1 b/ApiGit/Misc/CheckGitlabProtectedBranches.ps1 index 720cc9e..bd119e0 100644 --- a/ApiGit/Misc/CheckGitlabProtectedBranches.ps1 +++ b/ApiGit/Misc/CheckGitlabProtectedBranches.ps1 @@ -26,10 +26,10 @@ $deleteProtection = 1 $logFile = "GitlabProtectedBranches.log" #specifica quale installazione di gitlab va controllata -$gitlabIstance = $destinationNembro -$head = $nembroHead -#$gitlabIstance = $destinationAzzano -#$head = $azzanoHead +#$gitlabIstance = $destinationNembro +#$head = $nembroHead +$gitlabIstance = $destinationAzzano +$head = $azzanoHead #creazione folder di Log se non già esistente if (Test-Path $logFolder) { diff --git a/ApiGit/ReposCreation/ReposCreationAzzanoNembro.ps1 b/ApiGit/ReposCreation/ReposCreationAzzanoNembro.ps1 index 154570f..76c1018 100644 --- a/ApiGit/ReposCreation/ReposCreationAzzanoNembro.ps1 +++ b/ApiGit/ReposCreation/ReposCreationAzzanoNembro.ps1 @@ -13,17 +13,17 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") # avvio stopwatch $mainStopWatch = [system.diagnostics.stopwatch]::StartNew() #contatore ciclo do while -$projectCount = 1 +$projectCount = 200 #numero massimo di progetti da analizzare (messo a 1 per "sicura inserita" siccome questo script è potenzialmente pericoloso) $projectNumber = 300 #nome file di log $logFile = "AzzanoNembroReposCreation.log" #specifica su quale installazione di gitlab va eseguita la creazione (legge file config) -#$gitlabIstance = $destinationNembro -#$destinationHead = $nembroHead -$gitlabIstance = $destinationAzzano -$destinationHead = $azzanoHead +$gitlabIstance = $destinationNembro +$destinationHead = $nembroHead +#$gitlabIstance = $destinationAzzano +#$destinationHead = $azzanoHead #creazione folder di Log se non già esistente if (Test-Path $logFolder) { diff --git a/ApiGit/ReposCreation/ReposCreationGitea.ps1 b/ApiGit/ReposCreation/ReposCreationGitea.ps1 index 7b40652..deb0afb 100644 --- a/ApiGit/ReposCreation/ReposCreationGitea.ps1 +++ b/ApiGit/ReposCreation/ReposCreationGitea.ps1 @@ -12,9 +12,9 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") # avvio stopwatch $mainStopWatch = [system.diagnostics.stopwatch]::StartNew() #contatore ciclo do while -$projectCount = 1 +$projectCount = 200 #numero massimo di progetti da analizzare -$projectNumber = 300 +$projectNumber = 250 #nome file di log $logFile = "GiteaReposCreation.log" diff --git a/ApiGit/ReposCreation/ReposCreationGogs.ps1 b/ApiGit/ReposCreation/ReposCreationGogs.ps1 index 1d24570..3fab824 100644 --- a/ApiGit/ReposCreation/ReposCreationGogs.ps1 +++ b/ApiGit/ReposCreation/ReposCreationGogs.ps1 @@ -12,9 +12,9 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss") # avvio stopwatch $mainStopWatch = [system.diagnostics.stopwatch]::StartNew() #contatore ciclo do while -$projectCount = 1 +$projectCount = 200 #numero massimo di progetti da analizzare -$projectNumber = 300 +$projectNumber = 250 #nome file di log $logFile = "GogsReposCreation.log"