aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason T. Greene <jason.greene@redhat.com>2022-09-06 14:24:12 -0500
committerJason T. Greene <jason.greene@redhat.com>2022-09-06 16:17:31 -0500
commit744878a71cb225fca6cf6b8f322539b717559614 (patch)
tree822ac5a4d08d30d4191aa00ce786a8ca0b5541f2
parentecb9f99b88f11556f3c5c3a890c130b16ea6f254 (diff)
downloadpodman-744878a71cb225fca6cf6b8f322539b717559614.tar.gz
podman-744878a71cb225fca6cf6b8f322539b717559614.tar.bz2
podman-744878a71cb225fca6cf6b8f322539b717559614.zip
Add win-installer build/verify workflows to CI
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
-rw-r--r--.cirrus.yml24
-rw-r--r--contrib/cirrus/win-installer-install.ps16
-rw-r--r--contrib/cirrus/win-installer-main.ps160
3 files changed, 89 insertions, 1 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index dc0735836..5d9500e92 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -14,6 +14,8 @@ env:
GOPATH: &gopath "/var/tmp/go"
GOCACHE: "${GOPATH}/cache"
GOSRC: &gosrc "/var/tmp/go/src/github.com/containers/podman"
+ # Store the unaltered default location, for tasks that need it
+ CIRRUS_DEFAULT_WORK: ${CIRRUS_WORKING_DIR}
CIRRUS_WORKING_DIR: *gosrc
# The default is 'sh' if unspecified
CIRRUS_SHELL: "/bin/bash"
@@ -60,9 +62,10 @@ env:
# Curl-command prefix for downloading task artifacts, simply add the
# the url-encoded task name, artifact name, and path as a suffix.
+ ART_URL: https://api.cirrus-ci.com/v1/artifact/build/${CIRRUS_BUILD_ID}
ARTCURL: >-
curl --retry 5 --retry-delay 8 --fail --location -O
- --url https://api.cirrus-ci.com/v1/artifact/build/${CIRRUS_BUILD_ID}
+ --url ${ART_URL}
# Default timeout for each task
@@ -1019,6 +1022,7 @@ success_task:
- consistency_aarch64
- alt_build
- osx_alt_build
+ - win_installer
- docker-py_test
- unit_test
- apiv2_test
@@ -1103,6 +1107,24 @@ artifacts_task:
type: application/octet-stream
+win_installer_task:
+ name: "Verify Win Installer Build"
+ alias: win_installer
+ depends_on:
+ - alt_build
+ windows_container:
+ image: cirrusci/windowsservercore:2019
+ env:
+ PATH: "${PATH};C:\\ProgramData\\chocolatey\\bin"
+ CIRRUS_SHELL: powershell
+ CIRRUS_CLONE_DEPTH: 1
+ # Fake version, we are only testing the installer functions, so version doesn't matter
+ WIN_INST_VER: 9.9.9
+ CIRRUS_WORKING_DIR: "${CIRRUS_DEFAULT_WORK}"
+ install_script: '.\contrib\cirrus\win-installer-install.ps1'
+ main_script: '.\contrib\cirrus\win-installer-main.ps1'
+
+
# When a new tag is pushed, confirm that the code and commits
# meet criteria for an official release.
release_task:
diff --git a/contrib/cirrus/win-installer-install.ps1 b/contrib/cirrus/win-installer-install.ps1
new file mode 100644
index 000000000..f3fc4508d
--- /dev/null
+++ b/contrib/cirrus/win-installer-install.ps1
@@ -0,0 +1,6 @@
+# Update service is required for dotnet 3.5 (dep of wix)
+Set-Service -Name wuauserv -StartupType "Manual"
+choco install -y wixtoolset mingw golang archiver
+if ($LASTEXITCODE -ne 0) {
+ Exit 1
+}
diff --git a/contrib/cirrus/win-installer-main.ps1 b/contrib/cirrus/win-installer-main.ps1
new file mode 100644
index 000000000..64a94ee63
--- /dev/null
+++ b/contrib/cirrus/win-installer-main.ps1
@@ -0,0 +1,60 @@
+ # Powershell doesn't exit after
+ function CheckExit {
+ if ($LASTEXITCODE -ne 0) {
+ Exit $LASTEXITCODE
+ }
+}
+function DownloadFile {
+ param(
+ [Parameter(Mandatory)]
+ [string]$url,
+ [Parameter(Mandatory)]
+ [string]$file,
+ [Int]$retries=5,
+ [Int]$delay=8
+ )
+ $ProgressPreference = 'SilentlyContinue';
+ Write-Host "Downloading $url to $file"
+ For($i = 0;;) {
+ Try {
+ Invoke-WebRequest -UseBasicParsing -ErrorAction Stop -Uri $url -OutFile $file
+ Break
+ } Catch {
+ if (++$i -gt $retries) {
+ throw $_.Exception
+ }
+ Write-Host "Download failed - retrying:" $_.Exception.Response.StatusCode
+ Start-Sleep -Seconds $delay
+ }
+ }
+}
+# Drop global envs which have unix paths, defaults are fine
+Remove-Item Env:\GOPATH
+Remove-Item Env:\GOSRC
+Remove-Item Env:\GOCACHE
+
+Set-Location contrib\win-installer
+
+# Download and extract alt_build win release zip
+$url = "${ENV:ART_URL}/Windows Cross/repo/repo.tbz"
+# Arc requires extension to be "tbz2"
+DownloadFile "$url" "repo.tbz2"
+arc unarchive repo.tbz2 .; CheckExit
+
+# Build Installer
+.\build.ps1 $Env:WIN_INST_VER dev repo; CheckExit
+
+# Run the installer silently and WSL install option disabled (prevent reboots, wsl requirements)
+# We need AllowOldWin=1 for server 2019 (cirrus image), can be dropped after server 2022
+$ret = Start-Process -Wait -PassThru ".\podman-${ENV:WIN_INST_VER}-dev-setup.exe" -ArgumentList "/install /quiet WSLCheckbox=0 AllowOldWin=1 /log inst.log"
+if ($ret.ExitCode -ne 0) {
+ Write-Host "Install failed, dumping log"
+ Get-Content inst.log
+ Exit $ret.ExitCode
+}
+if (! ((Test-Path -Path "C:\Program Files\RedHat\Podman\podman.exe") -and `
+ (Test-Path -Path "C:\Program Files\RedHat\Podman\win-sshproxy.exe"))) {
+ Write-Host "Expected podman.exe and win-sshproxy.exe, one or both not present after install"
+ Exit 1
+}
+Write-Host "Installer verification successful!"