From 9ae9265ff667ec08551ca309add4952ba6a10a28 Mon Sep 17 00:00:00 2001 From: dzaitsev Date: Wed, 7 May 2025 19:58:24 +0300 Subject: [PATCH] pipelines zip and gdrive upload updated --- build/jenkins/GDriveUpload | 57 ++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/build/jenkins/GDriveUpload b/build/jenkins/GDriveUpload index 91230c3..b43f2a3 100644 --- a/build/jenkins/GDriveUpload +++ b/build/jenkins/GDriveUpload @@ -117,32 +117,47 @@ 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 "" } - if (\$filesArray.Count -gt 3) { - \$filesSorted = \$filesArray | Sort-Object -Descending - \$filesToDelete = \$filesSorted | Select-Object -Skip 3 + \$filesWithDateTime = @() - 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 + 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 } - - 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 found on Google Drive to clean up." + Write-Output "No files to delete." } """ }