From 4456e5220735d0373e18a5aaab02697ed8ef8e46 Mon Sep 17 00:00:00 2001 From: dzaitsev Date: Wed, 7 May 2025 20:14:44 +0300 Subject: [PATCH] pipelines zip and gdrive upload updated --- build/jenkins/GDriveUpload | 57 ++++++++++++++------------------------ 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/build/jenkins/GDriveUpload b/build/jenkins/GDriveUpload index b43f2a3..91230c3 100644 --- a/build/jenkins/GDriveUpload +++ b/build/jenkins/GDriveUpload @@ -117,47 +117,32 @@ pipeline { Write-Output "Files found on Google Drive:" Write-Output \$files - # Extract date-time from filenames and sort them \$filesArray = \$files -split "`n" | Where-Object { \$_ -ne "" } - \$filesWithDateTime = @() + if (\$filesArray.Count -gt 3) { + \$filesSorted = \$filesArray | Sort-Object -Descending + \$filesToDelete = \$filesSorted | Select-Object -Skip 3 - foreach (\$file in \$filesArray) { - if (\$file -match "AzaionSuite.Iterative.(\d{8})-(\d{6}).zip") { - \$date = [datetime]::ParseExact(\$matches[1], "yyyyMMdd", $null) - \$time = [datetime]::ParseExact(\$matches[2], "HHmmss", $null) - \$dateTime = \$date.Add(\$time.TimeOfDay) - \$filesWithDateTime += [PSCustomObject]@{ - FileName = \$file - DateTime = \$dateTime + Write-Output "Files to delete (older than 3 latest):" + Write-Output \$filesToDelete + + if (\$filesToDelete.Count -gt 0) { + \$tempFile = [System.IO.Path]::GetTempFileName() + \$filesToDelete | Set-Content -Path \$tempFile -Encoding utf8 + + Write-Output "Contents of temporary delete list file (\$tempFile):" + Get-Content \$tempFile + + foreach (\$file in \$filesToDelete) { + Write-Output "Deleting \$file..." + rclone deletefile AzaionGoogleDrive:${GOOGLE_DRIVE_FOLDER}/\$file } + + Remove-Item -Path \$tempFile + } else { + Write-Output "No files to delete." } - } - - # Sort files based on DateTime in descending order - \$sortedFiles = \$filesWithDateTime | Sort-Object DateTime -Descending - Write-Output "Sorted files (newest to oldest):" - \$sortedFiles | ForEach-Object { Write-Output "\$($_.FileName)" } - - # Keep the latest 3 files and delete the rest - \$filesToDelete = \$sortedFiles | Select-Object -Skip 3 - Write-Output "Files to delete (older than 3 latest):" - \$filesToDelete | ForEach-Object { Write-Output "\$($_.FileName)" } - - if (\$filesToDelete.Count -gt 0) { - \$tempFile = [System.IO.Path]::GetTempFileName() - \$filesToDelete.FileName | Set-Content -Path \$tempFile -Encoding utf8 - - Write-Output "Contents of temporary delete list file (\$tempFile):" - Get-Content \$tempFile - - foreach (\$file in \$filesToDelete.FileName) { - Write-Output "Deleting \$file..." - rclone deletefile AzaionGoogleDrive:${GOOGLE_DRIVE_FOLDER}/\$file - } - - Remove-Item -Path \$tempFile } else { - Write-Output "No files to delete." + Write-Output "No files found on Google Drive to clean up." } """ }