msbuild

Форк
0
/
extract-artifact-packages.ps1 
82 строки · 2.6 Кб
1
param(
2
  [Parameter(Mandatory=$true)][string] $InputPath,              # Full path to directory where artifact packages are stored
3
  [Parameter(Mandatory=$true)][string] $ExtractPath            # Full path to directory where the packages will be extracted
4
)
5

6
$ErrorActionPreference = 'Stop'
7
Set-StrictMode -Version 2.0
8

9
$disableConfigureToolsetImport = $true
10

11
function ExtractArtifacts {
12
  if (!(Test-Path $InputPath)) {
13
    Write-Host "Input Path does not exist: $InputPath"
14
    ExitWithExitCode 0
15
  }
16
  $Jobs = @()
17
  Get-ChildItem "$InputPath\*.nupkg" |
18
    ForEach-Object {
19
      $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName
20
    }
21

22
  foreach ($Job in $Jobs) {
23
    Wait-Job -Id $Job.Id | Receive-Job
24
  }
25
}
26

27
try {
28
  # `tools.ps1` checks $ci to perform some actions. Since the SDL
29
  # scripts don't necessarily execute in the same agent that run the
30
  # build.ps1/sh script this variable isn't automatically set.
31
  $ci = $true
32
  . $PSScriptRoot\..\tools.ps1
33

34
  $ExtractPackage = {
35
    param( 
36
      [string] $PackagePath                                 # Full path to a NuGet package
37
    )
38

39
    if (!(Test-Path $PackagePath)) {
40
      Write-PipelineTelemetryError -Category 'Build' -Message "Input file does not exist: $PackagePath"
41
      ExitWithExitCode 1
42
    }
43

44
    $RelevantExtensions = @('.dll', '.exe', '.pdb')
45
    Write-Host -NoNewLine 'Extracting ' ([System.IO.Path]::GetFileName($PackagePath)) '...'
46

47
    $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath)
48
    $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId
49

50
    Add-Type -AssemblyName System.IO.Compression.FileSystem
51

52
    [System.IO.Directory]::CreateDirectory($ExtractPath);
53

54
    try {
55
      $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath)
56
  
57
      $zip.Entries | 
58
      Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} |
59
        ForEach-Object {
60
            $TargetPath = Join-Path -Path $ExtractPath -ChildPath (Split-Path -Path $_.FullName)
61
            [System.IO.Directory]::CreateDirectory($TargetPath);
62

63
            $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.FullName
64
            [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile)
65
          }
66
    }
67
    catch {
68
      Write-Host $_
69
      Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_
70
      ExitWithExitCode 1
71
    }
72
    finally {
73
      $zip.Dispose() 
74
    }
75
  }
76
  Measure-Command { ExtractArtifacts }
77
}
78
catch {
79
  Write-Host $_
80
  Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_
81
  ExitWithExitCode 1
82
}
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.