Skip to content

Commit

Permalink
Add parser support for windows container tasks
Browse files Browse the repository at this point in the history
Also fix attempts to expand `$PATH`, this variable is handled specially
by Cirrus-CI so it can just be ignored.

Signed-off-by: Chris Evich <cevich@redhat.com>
  • Loading branch information
cevich committed Sep 22, 2022
1 parent fccddf1 commit d9fc524
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 2 deletions.
13 changes: 11 additions & 2 deletions cirrus-ci_env/cirrus-ci_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,18 @@ def format_env(env, global_env: Mapping[str, str]) -> Mapping[str, str]:
for k, v in env.items():
if "ENCRYPTED" in str(v):
continue
elif k == "PATH":
# Handled specially by Cirrus, preserve value as-is.
def_fmt[k] = str(v)
continue
_ = def_fmt.dollarcurly_env_var.sub(rep, str(v))
def_fmt[k] = def_fmt.dollar_env_var.sub(rep, _)
out = dict()
for k, v in def_fmt.items():
if k in env: # Don't unnecessarily duplicate globals
if k == "PATH":
out[k] = str(v)
continue
try:
out[k] = str(v).format_map(def_fmt)
except ValueError as xcpt:
Expand Down Expand Up @@ -195,15 +202,17 @@ def get_type_image(self, item: dict,
elif "osx_instance" in item or "macos_instance" in item:
_ = item.get("osx_instance", item.get("macos_instance"))
return "osx", _.get("image", default_image)
elif "image" in item.get("windows_container", ""):
return "wincntnr", item["windows_container"].get("image", default_image)
elif "image" in item.get("container", ""):
return "container", item["container"].get("image", default_image)
elif "dockerfile" in item.get("container", ""):
return "dockerfile", item["container"].get("dockerfile", default_image)
else:
inst_type = None
inst_type = "unsupported"
if self.global_type is not None:
inst_type = default_type
inst_image = None
inst_image = "unknown"
if self.global_image is not None:
inst_image = default_image
return inst_type, inst_image
Expand Down
16 changes: 16 additions & 0 deletions cirrus-ci_env/test/actual_cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -732,6 +732,22 @@ success_task:
clone_script: *noop
script: /bin/true

win_installer_task:
name: "Verify Win Installer Build"
alias: win_installer
# Don't run for multiarch container image cirrus-cron job.
only_if: $CIRRUS_CRON != 'multiarch'
depends_on:
- alt_build
windows_container:
image: "cirrusci/windowsservercore:2019"
env:
PATH: "${PATH};C:\\ProgramData\\chocolatey\\bin"
CIRRUS_SHELL: powershell
# Fake version, we are only testing the installer functions, so version doesn't matter
WIN_INST_VER: 9.9.9
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.
Expand Down
1 change: 1 addition & 0 deletions cirrus-ci_env/test/actual_task_names.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Upgrade test: from v2.1.1
VM img. keepalive
Validate fedora-33 Build
Verify Release
Verify Win Installer Build
Windows Cross
compose test on fedora-33
int podman fedora-33 root container
Expand Down
6 changes: 6 additions & 0 deletions cirrus-ci_env/test/expected_cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,12 @@ tasks:
TEST_FLAVOR: release
VM_IMAGE_NAME: fedora-c6524344056676352
_BUILD_CACHE_HANDLE: fedora-33-build-${CIRRUS_BUILD_ID}
Verify Win Installer Build:
alias: win_installer
env:
PATH: "${PATH};C:\\ProgramData\\chocolatey\\bin"
CIRRUS_SHELL: powershell
WIN_INST_VER: 9.9.9
Windows Cross:
alias: alt_build
env:
Expand Down
3 changes: 3 additions & 0 deletions cirrus-ci_env/test/expected_ti.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ Validate fedora-33 Build:
Verify Release:
- gcevm
- fedora-c6524344056676352
Verify Win Installer Build:
- wincntnr
- cirrusci/windowsservercore:2019
Windows Cross:
- gcevm
- fedora-c6524344056676352
Expand Down
1 change: 1 addition & 0 deletions cirrus-ci_env/test/test_cirrus-ci_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ def test_complex_type_image(self):
self.assertEqual(len(actual_cfg.tasks), len(expected_ti))
actual_ti = {k: [v["inst_type"], v["inst_image"]]
for (k, v) in actual_cfg.tasks.items()}
self.maxDiff = None # show the full dif
self.assertDictEqual(actual_ti, expected_ti)


Expand Down

0 comments on commit d9fc524

Please sign in to comment.