podman

Форк
0
/
process-release.ps1 
173 строки · 4.8 Кб
1
function Copy-Artifact {
2
    param(
3
        [Parameter(Mandatory)]
4
        [string]$fileName
5
    )
6
    $file = Get-ChildItem -Recurse -Path . -Name $fileName
7
    if (!$file) {
8
        throw "Could not find $filename"
9
    }
10
    Write-Host "file:" $file
11
    Copy-Item -Path $file -Destination "..\artifacts\$filename" -ErrorAction Stop
12
}
13

14
function DownloadOrSkip {
15
    param(
16
        [Parameter(Mandatory)]
17
        [string]$url,
18
        [Parameter(Mandatory)]
19
        [string]$file
20
    )
21
    $ProgressPreference = 'SilentlyContinue';
22
    try {
23
        Invoke-WebRequest -UseBasicParsing -ErrorAction Stop -Uri $url -OutFile $file
24
    } Catch {
25
        if ($_.Exception.Response.StatusCode -eq 404) {
26
            Write-Host "URL not available, signaling skip:"
27
            Write-Host "URL: $url"
28
            Exit 2
29
        }
30

31
        throw $_.Exception
32
    }
33
}
34

35
function DownloadOptional {
36
    param(
37
        [Parameter(Mandatory)]
38
        [string]$url,
39
        [Parameter(Mandatory)]
40
        [string]$file
41
    )
42
    $ProgressPreference = 'SilentlyContinue';
43
    try {
44
        Invoke-WebRequest -UseBasicParsing -ErrorAction Stop -Uri $url -OutFile $file
45
    } Catch {
46
    }
47

48
    Return
49
}
50

51

52
if ($args.Count -lt 1) {
53
    Write-Host "Usage: " $MyInvocation.MyCommand.Name "<version> [release_dir]"
54
    Exit 1
55
}
56

57
$releaseDir = ""
58
if ($args.Count -gt 1 -and $args[1].Length -gt 0) {
59
    $path = $args[1]
60
    $releaseDir = (Resolve-Path -Path "$path" -ErrorAction Stop).Path
61
}
62

63

64
$base_url = "$ENV:FETCH_BASE_URL"
65
if ($base_url.Length -le 0) {
66
    $base_url = "https://github.com/containers/podman"
67
}
68

69
$version = $args[0]
70
if ($version -notmatch '^v?([0-9]+\.[0-9]+\.[0-9]+)(-.*)?$') {
71
    Write-Host "Invalid version"
72
    Exit 1
73
}
74

75
# WiX burn requires a QWORD version only, numeric only
76
$Env:INSTVER=$Matches[1]
77

78
if ($version[0] -ne 'v') {
79
    $version = 'v' + $version
80
}
81

82
$restore = 0
83
$exitCode = 0
84

85
try {
86
    Write-Host "Cleaning up old artifacts"
87
    Remove-Item -Force -Recurse -Path .\docs -ErrorAction SilentlyContinue | Out-Null
88
    Remove-Item -Force -Recurse -Path .\artifacts -ErrorAction SilentlyContinue | Out-Null
89
    Remove-Item -Force -Recurse -Path .\fetch -ErrorAction SilentlyContinue | Out-Null
90

91
    New-Item fetch -ItemType Directory | Out-Null
92
    New-Item artifacts -ItemType Directory | Out-Null
93

94
    Write-Host "Fetching zip release"
95

96
    Push-Location fetch -ErrorAction Stop
97
    $restore = 1
98
    $ProgressPreference = 'SilentlyContinue';
99

100
    if ($releaseDir.Length -gt 0) {
101
        Copy-Item -Path "$releaseDir/podman-remote-release-windows_amd64.zip" "release.zip"
102
    } else {
103
        DownloadOrSkip "$base_url/releases/download/$version/podman-remote-release-windows_amd64.zip"  "release.zip"
104
        DownloadOptional "$base_url/releases/download/$version/shasums" ..\shasums
105
    }
106
    Expand-Archive -Path release.zip
107
    $loc = Get-ChildItem -Recurse -Path . -Name win-sshproxy.exe
108
    if (!$loc) {
109
        if ($releaseDir.Length -gt 0) {
110
            throw "Release dir only supports zip which includes win-sshproxy.exe"
111
        }
112
        Write-Host "Old release, zip does not include win-sshproxy.exe, fetching via msi"
113
        DownloadOrSkip "$base_url/releases/download/$version/podman-$version.msi" "podman.msi"
114
        dark -x expand ./podman.msi
115
        if (!$?) {
116
            throw "Dark command failed"
117
        }
118
        $loc = Get-ChildItem -Recurse -Path expand -Name 4A2AD125-34E7-4BD8-BE28-B2A9A5EDBEB5
119
        if (!$loc) {
120
            throw "Could not obtain win-sshproxy.exe"
121
        }
122
        Copy-Item -Path "expand\$loc" -Destination "win-sshproxy.exe" -ErrorAction Stop
123
        Remove-Item -Recurse -Force -Path expand
124
    }
125

126
    Write-Host "Copying artifacts"
127
    Foreach ($fileName in "win-sshproxy.exe", "podman.exe") {
128
        Copy-Artifact($fileName)
129
    }
130

131
    $loc = Get-ChildItem -Recurse -Path . -Name gvproxy.exe
132
    if (!$loc) {
133
        Write-Host "Skipping gvproxy.exe artifact"
134
    } else {
135
        Copy-Artifact("gvproxy.exe")
136
    }
137

138
    # Retaining for future additions
139
    # $loc = Get-ChildItem -Recurse -Path . -Name policy.json
140
    # if (!$loc) {
141
    #     Write-Host "Skipping policy.json artifact"
142
    # } else {
143
    #     Copy-Artifact("policy.json")
144
    # }
145

146
    $docsloc = Get-ChildItem -Path . -Name docs -Recurse
147
    $loc = Get-ChildItem -Recurse -Path . -Name podman-for-windows.html
148
    if (!$loc) {
149
        Write-Host "Old release did not include welcome page, using podman-machine instead"
150
        $loc = Get-ChildItem -Recurse -Path . -Name podman-machine.html
151
        Copy-Item -Path $loc -Destination "$docsloc\podman-for-windows.html"
152
    }
153

154
    Write-Host "Copying docs"
155
    Copy-Item -Recurse -Path $docsloc -Destination ..\docs -ErrorAction Stop
156
    Write-Host "Done!"
157

158
    if (!$loc) {
159
        throw "Could not find docs"
160
    }
161
}
162
catch {
163
    Write-Host $_
164

165
    $exitCode = 1
166
}
167
finally {
168
    if ($restore) {
169
        Pop-Location
170
    }
171
}
172

173
exit $exitCode
174

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

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

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

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