7 Commits

Author SHA1 Message Date
marco.locatelli@steamware.net 674ce894b5 minor fix 2026-05-13 16:01:06 +02:00
marco.locatelli@steamware.net 23137a0fed refactor contatori + 1 -> ++ 2026-05-13 15:17:07 +02:00
marco.locatelli@steamware.net dfe2f63787 pulizia conf, rimozione dati gitlab azzano e nembro 2026-05-13 12:45:25 +02:00
marco.locatelli@steamware.net bc9d2048a9 minor fix e rimozione script inutile userlistnotificationslevel 2026-05-08 10:15:26 +02:00
marco.locatelli@steamware.net 8bcbb1fd04 creazione script change notify level 2026-05-05 17:20:51 +02:00
marco.locatelli@steamware.net f11d2ac73a creazione script gitlab user list 2026-05-05 16:27:56 +02:00
marco.locatelli@steamware.net 1e9b24a3df minor fix per sistemare repo azzano 2026-05-05 15:36:05 +02:00
19 changed files with 285 additions and 100 deletions
+31 -38
View File
@@ -1,5 +1,13 @@
######### FILE DI CONFIGURAZIONE PER SCRIPT API GIT #########
#### CONF LOG ####
#cartella file di log
$logFolder = "c:\Steamware\Logs\Gitlab\"
#livello di log: 0=log sintetico, 1=log errori, 2=log full, 3=log ampolloso
$logLevel = 3
#output a terminale: 0=disattivo, 1=abilitato
$terminalOutput = 1
#### CONF GITLAB ####
#access token per autenticazione gitlab da profilo marco.locatelli@egalware.com con scadenza 31 dicembre 2024
#$gitlabHead2024 = @{"PRIVATE-TOKEN" = "glpat-VjT_SAsBk3s-yWE1LDUF" }
@@ -11,37 +19,6 @@ $gitlabHead = @{"PRIVATE-TOKEN" = "$($tokenGitlab)" }
#nome utente che effettua i mirror push
$userName = "replica"
#### CONF GITLAB AZZANO ####
#destinazione mirror per azzano
$destinationAzzano = "gitlab-azzano.steamware.net"
#token autenticazione utente replica azzano
#token 2025:$tokenAzzano = "glpat-tCyVnkDQb3uB_yFywQtK"
#token autenticazione utente replica azzano Gennaio 2026:
$tokenAzzano = "glpat-xbCbgalMbPwJ9MDvZTU3rW86MQp1OnAH.01.0w17pjo4t"
#access token per autenticazione gitlab-azzano
$azzanoHead = @{"PRIVATE-TOKEN" = "$($tokenAzzano)" }
#### CONF GITLAB NEMBRO ####
#destinazione mirror per nembro
$destinationNembro = "gitlab-nembro.steamware.net"
#token autenticazione utente replica nembro
$tokenNembro = "glpat--9NqsusKLmHdF8z1kU9t"
#access token per autenticazione gitlab-nembro
$nembroHead = @{"PRIVATE-TOKEN" = "$($tokenNembro)" }
#### CONF gitea-nembro.steamware.net ####
#destinazione mirror per gitea
$giteaNembro = "gitea-nembro.steamware.net"
#nome utente gitea che effettua i mirror push
$giteaNembroUser = "replica"
#autenticazione replica gitea
$giteaNembroPass = "IXQkDchDwMah8E"
#token autenticazione utente replica gitea
$tokenGiteaNembro = "c58a2fdf6493bb690e8c39b393e06a121f8a6761"
#access token per autenticazione gitea da profilo replica
$giteaNembroHead = @{"Authorization" = "token $($tokenGiteaNembro)" }
#### CONF gitea.steamware.net ####
#destinazione mirror per gitea
$giteaSteamw = "gitea.steamware.net"
@@ -66,10 +43,26 @@ $tokenGogs = "bb6d8e9a4d76445e33b12e1664140043fdaa8d87"
#access token per autenticazione gogs da profilo replica
$gogsHead = @{"Authorization" = "token $($tokenGogs)" }
#### CONF LOG ####
#cartella file di log
$logFolder = "c:\Steamware\Logs\Gitlab\"
#livello di log: 0=log sintetico, 1=log errori, 2=log full, 3=log ampolloso
$logLevel = 3
#output a terminale: 0=disattivo, 1=abilitato
$terminalOutput = 1
#### CONF gitea-azzano.steamware.net ####
#destinazione mirror per gitea
$giteaAzzano = "gitea-azzano.steamware.net"
#nome utente gitea che effettua i mirror push
$giteaAzzanoUser = "replica"
#autenticazione replica gitea
$giteaAzzanoPass = "kj5uQz9QpVdrwXj"
#token autenticazione utente replica gitea
$tokenGiteaAzzano = "9e9958e9d46d78cc098b3ba7341e750f2d2fd8a3"
#access token per autenticazione gitea da profilo replica
$giteaAzzanoHead = @{"Authorization" = "token $($tokenGiteaAzzano)" }
#### CONF gitea-nembro.steamware.net ####
#destinazione mirror per gitea
$giteaNembro = "gitea-nembro.steamware.net"
#nome utente gitea che effettua i mirror push
$giteaNembroUser = "replica"
#autenticazione replica gitea
$giteaNembroPass = "IXQkDchDwMah8E"
#token autenticazione utente replica gitea
$tokenGiteaNembro = "c58a2fdf6493bb690e8c39b393e06a121f8a6761"
#access token per autenticazione gitea da profilo replica
$giteaNembroHead = @{"Authorization" = "token $($tokenGiteaNembro)" }
+12 -1
View File
@@ -48,7 +48,7 @@ Function FreshMirrorCreation {
#compongo url da chiamare per creazione nuovo mirror
$callUrlCreateMirror = "https://gitlab.steamware.net/api/v4/projects/" + $projectNumber + "/remote_mirrors"
#creo url del nuovo mirror con username e token relativi a gitlab
$newMirror = "https://" + $user + ":" + $auth + "@" + $destination + "/" + $path
$newMirror = "http://" + $user + ":" + $auth + "@" + $destination + "/" + $path
#creo body da convertire in json
$body =
@{
@@ -69,3 +69,14 @@ Function FreshMirrorCreation {
#scrivo ID e URL nuovo mirror
WriteLogOutput $logFile 1 "NEW ID: $mirrorId - URL: $mirrorUrl - Mirror creato con successo"
}
Function TryParse-Json {
param([string]$InputString)
try {
return $InputString | ConvertFrom-Json -ErrorAction Stop
}
catch {
return $null
}
}
@@ -62,8 +62,8 @@ do {
#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
# $projectJobFound++
# $jobFound++
#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
@@ -75,14 +75,14 @@ do {
#}
#WriteLogOutput $logFile 1 "Job trovati per il progetto $($projectCount): $($projectJobFound)"
#$projectJobFound = 0
$existingProjects = $existingProjects + 1
$existingProjects++
}
#scrivo se trovo un errore durante il try/catch
catch {
$parsedError = $_ | ConvertFrom-Json
WriteLogOutput $logFile 3 $($parsedError.message)
}
$projectCount = $projectCount + 1
$projectCount++
}
#fine ciclo principale
while ($projectCount -le $projectNumber)
+4 -4
View File
@@ -65,18 +65,18 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) {
WriteLogOutput $logFile 1 "--------------------"
WriteLogOutput $logFile 1 "**PROGETTO $projectCount**"
if ($parsedResponse.Count -eq 0 ) {
$projectWithNoCommits = $projectWithNoCommits + 1
$projectWithNoCommits++
}
else {
$projectWithCommits = $projectWithCommits + 1
$projectWithCommits++
foreach ($item in $parsedResponse) {
if ($item.web_url) {
WriteLogOutput $logFile 1 "Date: $($item.committed_date) - Web Url: $($item.web_url)"
$recentCommits = $recentCommits + 1
$recentCommits++
}
}
}
$projectsFound = $projectsFound + 1
$projectsFound++
}
#scrivo se trovo un errore durante il try/catch
catch {
+3 -3
View File
@@ -62,16 +62,16 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
#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
$mirrorSuccessCount++
}
#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)"
$mirrorErrorsCount = $mirrorErrorsCount + 1
$mirrorErrorsCount++
}
}
$existingProjects = $existingProjects + 1
$existingProjects++
}
#scrivo se trovo un errore durante il try/catch
catch {
+19 -16
View File
@@ -13,9 +13,11 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# avvio stopwatch
$mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 200
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 300
#contatore mirror creati
$createdMirrors = 0
#nome file di log
$logFile = "NewMirrorsCreation.log"
#nome file di log old
@@ -61,27 +63,26 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) {
if ($gitlabResponse.Content -inotmatch "gitea.steamware.net") {
#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
$createdMirrors++
}
#se la risposta non contiene "gogs" procedo a creare mirror relativo
if ($gitlabResponse.Content -inotmatch "gogs") {
if ($gitlabResponse.Content -inotmatch "gogs.steamware.net") {
#chiamo funzione per creare mirror verso gogs
FreshMirrorCreation $projectCount $gogsUser $gogsPass $gogsDestination $simplePath
$createdMirrors++
}
#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
#se la risposta non contiene "gitea-nembro" procedo a creare mirror relativo
if ($gitlabResponse.Content -inotmatch "gitea-nembro") {
#chiamo funzione per creare mirror verso gitea-nembro
FreshMirrorCreation $projectCount $giteaNembroUser $giteaNembroPass $giteaNembro $simplePath
$createdMirrors++
}
#se la risposta non contiene "gitea-azzano" procedo a creare mirror relativo
if ($gitlabResponse.Content -inotmatch "gitea-azzano") {
#chiamo funzione per creare mirror verso gitea-azzano
FreshMirrorCreation $projectCount $giteaAzzanoUser $giteaAzzanoPass $giteaAzzano $simplePath
$createdMirrors++
}
#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 {
@@ -103,6 +104,8 @@ $endTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
#scrivo a video le statistiche
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Nuovi mirror creati: $createdMirrors"
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Fine Esecuzione Script: $endTime"
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Durata Esecuzione Script: $durataScript secondi"
+8 -3
View File
@@ -2,7 +2,7 @@
#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.
#IMPORTANTE: SCRIPT PERICOLOSO. TOGLIERE COMMENTO A RIGA 62 PER CANCELLARE.
#importo file contenente configurazioni
. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1
@@ -16,13 +16,15 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 250
$endProj = 300
#contatore numero mirror cancellati
$deletedMirrors = 0
#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"
$mirrorToDelete = "gitlab-azzano"
#creazione folder di Log se non esiste
CheckLogFolder
@@ -59,6 +61,7 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) {
$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"
$deletedMirrors++
}
}
}
@@ -82,6 +85,8 @@ $endTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
#scrivo a video le statistiche
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Numero mirror cancellati: $deletedMirrors"
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Fine Esecuzione Script: $endTime"
WriteLogOutput $logFile 0 ""
WriteLogOutput $logFile 0 "Durata Esecuzione Script: $durataScript secondi"
+2 -2
View File
@@ -65,9 +65,9 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++) {
else {
WriteLogOutput $logFile 0 $("Mirror Push: Unknown - " + $item.url)
}
$mirrorCount = $mirrorCount + 1
$mirrorCount++
}
$existingProjects = $existingProjects + 1
$existingProjects++
}
#scrivo se trovo un errore durante il try/catch
catch {
@@ -14,7 +14,7 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 300
$endProj = 250
#inizializzo variabili vuote
$mirrorId = ""
$mirrorUrl = ""
@@ -25,7 +25,7 @@ $logFile = "GitlabMirroringGitea.log"
#nome file di log old
$oldLogFile = "GitlabMirroringGitea.old"
#gitea di destinazione
#gitea di destinazione (scegliere prima di esecuzione)
#$target = "steamware"
$target = "nembro"
@@ -51,7 +51,7 @@ if ($target = "nembro"){
#nome utente gitea nembro che effettua i mirror push
$giteaUser = $giteaNembroUser
#autenticazione replica gitea nembro
$giteaPass = $giteaNembroPass
$giteaPass = $tokenGiteaNembro
#access token per autenticazione gitea nembro da profilo replica
$giteaHead = $giteaNembroHead
}
+3 -3
View File
@@ -1,4 +1,4 @@
###Gitlab: Rinnovamento mirrors esistenti###
###Gitlab: Rinnovamento mirrors esistenti (O CANCELLAZIONE)###
#Questo script viene utilizzato per cancellare e ricreare i mirror esistenti verso gitlab-nembro e gitlab-azzano. Da usare allo scadere dei token di autenticazione.
#Una volta inseriti i token nuovi nel file ApiScriptConfig, facendo girare questo script tutti i mirror verso nembro e azzano sono ricreati con il token nuovo.
@@ -15,7 +15,7 @@ $mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 250
$endProj = 300
#inizializzo variabili vuote
$mirrorId = ""
$mirrorUrl = ""
@@ -66,7 +66,7 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
if ($item.url.Contains("azzano")) {
$doExecute = "true"
$destinationToken = $tokenAzzano
$mirrorDestination = "@gitlab-azzano.steamware.net"
$mirrorDestination = $destinationAzzano
}
#controllo se l'url del mirror contiene nembro, riscrivo mirror
#elseif ($item.url.Contains("nembro")) {
+2 -2
View File
@@ -61,7 +61,7 @@ $head = $azzanoHead
WriteLogOutput $logFile 1 "**PROGETTO $projectCount $gitlabIstance**"
foreach ($item in $parsedResponse) {
WriteLogOutput $logFile 1 "Protected Branch Name: $($item.name) - Allow Force Push: $($item.allow_force_push)"
$protectedProjects = $protectedProjects + 1
$protectedProjects++
if ($deleteProtection -eq 1) {
#nuovo URL x delete
$callUrlDelete = "https://" + $gitlabIstance + "/api/v4/projects/" + $projectCount + "/protected_branches/" + $item.name
@@ -69,7 +69,7 @@ $head = $azzanoHead
Invoke-WebRequest -Method Delete -URI $callUrlDelete -Headers $head -ContentType "application/json" -UseBasicParsing
}
}
$existingProjects = $existingProjects + 1
$existingProjects++
}
#scrivo se trovo un errore durante il try/catch
catch {
@@ -57,15 +57,15 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
#verifico se i pipeline trovati per il progetto corrente hanno status "success"
if ($item.status.Equals("success")) {
WriteLogOutput $logFile 2 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineSuccessCount = $pipelineSuccessCount + 1
$pipelineSuccessCount++
}
#i pipeline che non hanno status "success" vengono loggati con relativo errore
else {
WriteLogOutput $logFile 1 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineErrorsCount = $pipelineErrorsCount + 1
$pipelineErrorsCount++
}
}
$projectsWithPipeline = $projectsWithPipeline + 1
$projectsWithPipeline++
}
#scrivo se trovo un errore durante il try/catch
catch {
@@ -57,15 +57,15 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
#verifico se i pipeline trovati per il progetto corrente hanno status "success"
if ($item.status.Equals("success")) {
WriteLogOutput $logFile 2 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineSuccessCount = $pipelineSuccessCount + 1
$pipelineSuccessCount++
}
#i pipeline che non hanno status "success" vengono loggati con relativo errore
else {
WriteLogOutput $logFile 1 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineErrorsCount = $pipelineErrorsCount + 1
$pipelineErrorsCount++
}
}
$projectsWithPipeline = $projectsWithPipeline + 1
$projectsWithPipeline++
}
#scrivo se trovo un errore durante il try/catch
catch {
+3 -3
View File
@@ -60,15 +60,15 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
#verifico se i pipeline trovati per il progetto corrente hanno status "success"
if ($item.status.Equals("success")) {
WriteLogOutput $logFile 2 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineSuccessCount = $pipelineSuccessCount + 1
$pipelineSuccessCount++
}
#i pipeline che non hanno status "success" vengono loggati con relativo errore
else {
WriteLogOutput $logFile 1 "Pipeline: $($item.web_url) - Status: $($item.status)"
$pipelineErrorsCount = $pipelineErrorsCount + 1
$pipelineErrorsCount++
}
}
$projectsWithPipeline = $projectsWithPipeline + 1
$projectsWithPipeline++
}
#scrivo se trovo un errore durante il try/catch
catch {
@@ -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
$startProj = 200
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 300
#nome file di log
+20 -9
View File
@@ -12,25 +12,26 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# avvio stopwatch
$mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 200
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 260
$endProj = 300
#nome file di log
$logFile = "GiteaReposCreation.log"
#nome file di log old
$oldLogFile = "GiteaReposCreation.old"
#gitea di destinazione
#$target = "steamware"
$target = "nembro"
#creazione folder di Log se non esiste
CheckLogFolder
#rotazione vecchio logFile da .log a .old se esiste
RotateOldLog
if ($target = "steamware"){
#gitea di destinazione
#$target = "steamware"
#$target = "nembro"
$target = "azzano"
if ($target -eq "steamware"){
#destinazione mirror per gitea Steamw
$giteaDestination = $giteaSteamw
#nome utente gitea Steamw che effettua i mirror push
@@ -40,7 +41,7 @@ $giteaPass = $giteaSteamwPass
#access token per autenticazione gitea Steamw da profilo replica
$giteaHead = $giteaSteamwHead
}
if ($target = "nembro") {
if ($target -eq "nembro") {
#destinazione mirror per gitea nembro
$giteaDestination = $giteaNembro
#nome utente gitea nembro che effettua i mirror push
@@ -50,6 +51,16 @@ $giteaPass = $giteaNembroPass
#access token per autenticazione gitea nembro da profilo replica
$giteaHead = $giteaNembroHead
}
if ($target -eq "azzano") {
#destinazione mirror per gitea azzano
$giteaDestination = $giteaAzzano
#nome utente gitea azzano che effettua i mirror push
$giteaUser = $giteaAzzanoUser
#autenticazione replica gitea nemazzanobro
$giteaPass = $giteaAzzanoPass
#access token per autenticazione gitea azzano da profilo replica
$giteaHead = $giteaAzzanoHead
}
#scrivo intestazione e inizio analisi
WriteLogOutput $logFile 0 "--------------------"
@@ -76,7 +87,7 @@ for ($projectCount = $startProj; $projectCount -le $endProj; $projectCount++){
WriteLogOutput $logFile 1 "**PROGETTO $projectCount**"
foreach ($gitlabItem in $parsedGitlabResponse) {
WriteLogOutput $logFile 1 "Gitlab Project Name: $($gitlabItem.name)"
$callGiteaUrl = "https://" + $giteaDestination + "/api/v1/orgs/Egalware/repos"
$callGiteaUrl = "http://" + $giteaDestination + "/api/v1/orgs/Egalware/repos"
#dichiaro un body da convertire in JSON con il nome del repo da creare (prendo path o name a seconda delle necessità)
$giteaBody =
@{
+1 -1
View File
@@ -12,7 +12,7 @@ $startTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# avvio stopwatch
$mainStopWatch = [system.diagnostics.stopwatch]::StartNew()
#contatore ciclo do while
$startProj = 200
$startProj = 1
#numero massimo di progetti da analizzare
$endProj = 300
#nome file di log
+77
View File
@@ -0,0 +1,77 @@
<#
.SYNOPSIS
Aggiorna il livello di notifica GitLab per un range di utenti
e logga tutto in C:\Steamware\Logs\Gitlab\notificationLevelChange.log
#>
# importa configurazioni
. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1
. .\ApiGit\ApiGitResources\ApiScriptsFunctions.ps1
$GitlabUrl = "https://gitlab.steamware.net"
$PrivateToken = $tokenGitlab
# Range utenti da aggiornare (modificabile)
$StartId = 1
$EndId = 50
# Livello notifiche da impostare (modificabile)
$NewLevel = "mention" # altri valori: disabled, participating, watch, global, custom
# Percorso log
$LogDir = "C:\Steamware\Logs\Gitlab"
$LogFile = Join-Path $LogDir "notificationLevelChange.log"
# Crea cartella log se non esiste
if (-not (Test-Path $LogDir)) {
New-Item -Path $LogDir -ItemType Directory -Force | Out-Null
}
# Header base
$baseHeaders = @{
"PRIVATE-TOKEN" = $PrivateToken
"Content-Type" = "application/json"
}
# Corpo JSON della richiesta
$body = @{ level = $NewLevel } | ConvertTo-Json
# Inizializza log
"INFO [$((Get-Date).ToString('o'))] Starting notification level update for IDs $StartId-$EndId (level=$NewLevel)" |
Out-File -FilePath $LogFile -Encoding UTF8
# Ciclo utenti
for ($id = $StartId; $id -le $EndId; $id++) {
$separator = "----- USER $id -----"
$url = "$GitlabUrl/api/v4/notification_settings"
# Clona headers e aggiunge Sudo per modificare altri utenti
$headers = @{}
foreach ($k in $baseHeaders.Keys) { $headers[$k] = $baseHeaders[$k] }
$headers["Sudo"] = "$id"
try {
$response = Invoke-WebRequest `
-Method PUT `
-Uri $url `
-Headers $headers `
-Body $body `
-ErrorAction Stop
"$separator`nINFO [$((Get-Date).ToString('o'))] UPDATED id=$id level=$NewLevel status=$($response.StatusCode)" |
Out-File -FilePath $LogFile -Encoding UTF8 -Append
}
catch {
$msg = $_.Exception.Message -replace "`r?`n"," "
"$separator`nERROR [$((Get-Date).ToString('o'))] FAILED id=$id message=$msg" |
Out-File -FilePath $LogFile -Encoding UTF8 -Append
}
Start-Sleep -Milliseconds 150
}
"INFO [$((Get-Date).ToString('o'))] Completed." |
Out-File -FilePath $LogFile -Encoding UTF8 -Append
Write-Host "Fatto. Log salvato in $LogFile"
+85
View File
@@ -0,0 +1,85 @@
<#
.SYNOPSIS
Recupera utenti GitLab per ID 1-100 e scrive output in C:\Steamware\Logs\Gitlab\gitlab_users_1-100.log
#>
#importo file contenente configurazioni
. .\ApiGit\ApiGitResources\ApiScriptsConfig.ps1
#importo file contenente funzioni
. .\ApiGit\ApiGitResources\ApiScriptsFunctions.ps1
$GitlabUrl = "gitlab.steamware.net"
$PrivateToken = $tokenGitlab
# Configurazione
$StartId = 1
$EndId = 50
$LogDir = "C:\Steamware\Logs\Gitlab"
$LogFile = Join-Path -Path $LogDir -ChildPath "GitlabUsers.log"
# Crea cartella log se non esiste
try {
if (-not (Test-Path -Path $LogDir)) {
New-Item -Path $LogDir -ItemType Directory -Force | Out-Null
}
}
catch {
Write-Error "Impossibile creare la cartella di log $LogDir. Errore: $($_.Exception.Message)"
exit 1
}
# Header autenticazione
$baseUrl = $GitlabUrl.TrimEnd('/')
$headers = @{ "PRIVATE-TOKEN" = $PrivateToken }
# Inizializza file di log (sovrascrive se esiste)
$startLine = "INFO [{0}] Starting GitLab users retrieval for IDs {1}-{2}" -f (Get-Date -Format o), $StartId, $EndId
$startLine | Out-File -FilePath $LogFile -Encoding UTF8
$retrieved = 0
$errors = 0
# inizializza contatore per numeratore
$counter = 1
$total = $EndId - $StartId + 1
for ($id = $StartId; $id -le $EndId; $id++) {
$url = "$baseUrl/api/v4/users/$id"
# crea prefisso numerato e separatore (es. --- 001/100 ---)
$num = "{0:D3}" -f $counter
$separator = "----- $num/$total -----"
try {
$user = Invoke-RestMethod -Uri $url -Headers $headers -Method Get -ErrorAction Stop
$json = $user | ConvertTo-Json -Depth 10 -Compress
$line = "{0} `nINFO [{1}] USER_FOUND id={2} data={3}" -f $separator, (Get-Date -Format o), $id, $json
$line | Out-File -FilePath $LogFile -Encoding UTF8 -Append
$retrieved++
}
catch {
$status = "unknown"
try {
if ($_.Exception.Response -ne $null) {
$status = $_.Exception.Response.StatusCode.value__
}
} catch { $status = "unknown" }
if ($status -eq 404) {
$line = "{0} `nWARN [{1}] USER_NOT_FOUND id={2} status=404 message=Not Found" -f $separator, (Get-Date -Format o), $id
}
else {
$msg = $_.Exception.Message -replace "`r?`n", " "
$line = "{0} `nERROR [{1}] USER_ERROR id={2} status={3} message={4}" -f $separator, (Get-Date -Format o), $id, $status, $msg
}
$line | Out-File -FilePath $LogFile -Encoding UTF8 -Append
$errors++
}
$counter++
Start-Sleep -Milliseconds 200
}
$endLine = "INFO [{0}] Completed. Retrieved={1} Errors={2}" -f (Get-Date -Format o), $retrieved, $errors
$endLine | Out-File -FilePath $LogFile -Encoding UTF8 -Append
Write-Host "Fatto. Log salvato in $LogFile. Utenti recuperati: $retrieved. Errori: $errors."