mirror of
https://github.com/postgres/postgres.git
synced 2026-02-20 00:10:16 -05:00
ci: Simplify ci-os-only handling
Handle 'ci-os-only' occurrences in the .cirrus.star file instead of .cirrus.tasks.yml file. Now, 'ci-os-only' occurrences are controlled from one central place instead of dealing with them in each task. Author: Andres Freund <andres@anarazel.de> Reviewed-by: Nazir Bilal Yavuz <byavuz81@gmail.com> Discussion: https://postgr.es/m/20240413021221.hg53rvqlvldqh57i%40awork3.anarazel.de Backpatch: 15-, where CI support was added
This commit is contained in:
parent
88f3f7fd83
commit
b3aa95b61e
2 changed files with 34 additions and 6 deletions
30
.cirrus.star
30
.cirrus.star
|
|
@ -7,7 +7,7 @@ https://github.com/bazelbuild/starlark/blob/master/spec.md
|
|||
See also .cirrus.yml and src/tools/ci/README
|
||||
"""
|
||||
|
||||
load("cirrus", "env", "fs", "yaml")
|
||||
load("cirrus", "env", "fs", "re", "yaml")
|
||||
|
||||
|
||||
def main():
|
||||
|
|
@ -66,6 +66,7 @@ def main():
|
|||
def compute_environment_vars():
|
||||
cenv = {}
|
||||
|
||||
###
|
||||
# Some tasks are manually triggered by default because they might use too
|
||||
# many resources for users of free Cirrus credits, but they can be
|
||||
# triggered automatically by naming them in an environment variable e.g.
|
||||
|
|
@ -82,6 +83,33 @@ def compute_environment_vars():
|
|||
else:
|
||||
value = 'manual'
|
||||
cenv[name] = value
|
||||
###
|
||||
|
||||
###
|
||||
# Parse "ci-os-only:" tag in commit message and set
|
||||
# CI_{$OS}_ENABLED variable for each OS
|
||||
|
||||
operating_systems = [
|
||||
'freebsd',
|
||||
'linux',
|
||||
'macos',
|
||||
'windows',
|
||||
]
|
||||
commit_message = env.get('CIRRUS_CHANGE_MESSAGE')
|
||||
match_re = r"(^|.*\n)ci-os-only: ([^\n]+)($|\n.*)"
|
||||
|
||||
# re.match() returns an array with a tuple of (matched-string, match_1, ...)
|
||||
m = re.match(match_re, commit_message)
|
||||
if m and len(m) > 0:
|
||||
os_only = m[0][2]
|
||||
os_only_list = re.split(r'[, ]+', os_only)
|
||||
else:
|
||||
os_only_list = operating_systems
|
||||
|
||||
for os in operating_systems:
|
||||
os_enabled = os in os_only_list
|
||||
cenv['CI_{0}_ENABLED'.format(os.upper())] = os_enabled
|
||||
###
|
||||
|
||||
return cenv
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ task:
|
|||
|
||||
<<: *freebsd_task_template
|
||||
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*freebsd.*'
|
||||
only_if: $CI_FREEBSD_ENABLED
|
||||
|
||||
sysinfo_script: |
|
||||
id
|
||||
|
|
@ -153,7 +153,7 @@ task:
|
|||
|
||||
<<: *linux_task_template
|
||||
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*linux.*'
|
||||
only_if: $CI_LINUX_ENABLED
|
||||
|
||||
ccache_cache:
|
||||
folder: ${CCACHE_DIR}
|
||||
|
|
@ -239,7 +239,7 @@ task:
|
|||
|
||||
<<: *macos_task_template
|
||||
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*(macos|darwin|osx).*'
|
||||
only_if: $CI_MACOS_ENABLED
|
||||
|
||||
sysinfo_script: |
|
||||
id
|
||||
|
|
@ -389,7 +389,7 @@ task:
|
|||
|
||||
<<: *windows_task_template
|
||||
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
|
||||
only_if: $CI_WINDOWS_ENABLED
|
||||
|
||||
sysinfo_script: |
|
||||
chcp
|
||||
|
|
@ -476,7 +476,7 @@ task:
|
|||
|
||||
# task that did not run, count as a success, so we need to recheck Linux'
|
||||
# condition here ...
|
||||
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*linux.*'
|
||||
only_if: $CI_LINUX_ENABLED
|
||||
|
||||
<<: *linux_task_template
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue