Module: Mesa Branch: main Commit: ef0e8bae0dc8aace44e050878aadbdf2e1cd9eac URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ef0e8bae0dc8aace44e050878aadbdf2e1cd9eac
Author: Eric Engestrom <e...@igalia.com> Date: Tue Dec 12 12:27:46 2023 +0000 ci/b2c: use envvars directly instead of converting them back and forth into cli args Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26653> --- .gitlab-ci/b2c/generate_b2c.py | 82 ++++++++++++++---------------------------- .gitlab-ci/test/gitlab-ci.yml | 24 +------------ 2 files changed, 27 insertions(+), 79 deletions(-) diff --git a/.gitlab-ci/b2c/generate_b2c.py b/.gitlab-ci/b2c/generate_b2c.py index c335e9eaa22..9de63dceef9 100755 --- a/.gitlab-ci/b2c/generate_b2c.py +++ b/.gitlab-ci/b2c/generate_b2c.py @@ -22,74 +22,44 @@ # IN THE SOFTWARE. from jinja2 import Environment, FileSystemLoader -from argparse import ArgumentParser from os import environ, path import json -parser = ArgumentParser() -parser.add_argument('--ci-job-id') -parser.add_argument('--container-cmd') -parser.add_argument('--initramfs-url') -parser.add_argument('--job-success-regex') -parser.add_argument('--job-warn-regex') -parser.add_argument('--kernel-url') -parser.add_argument('--log-level', type=int) -parser.add_argument('--poweroff-delay', type=int) -parser.add_argument('--session-end-regex') -parser.add_argument('--session-reboot-regex') -parser.add_argument('--tags', nargs='?', default='') -parser.add_argument('--template', default='b2c.yml.jinja2.jinja2') -parser.add_argument('--timeout-boot-minutes', type=int) -parser.add_argument('--timeout-boot-retries', type=int) -parser.add_argument('--timeout-first-minutes', type=int) -parser.add_argument('--timeout-first-retries', type=int) -parser.add_argument('--timeout-minutes', type=int) -parser.add_argument('--timeout-overall-minutes', type=int) -parser.add_argument('--timeout-retries', type=int) -parser.add_argument('--job-volume-exclusions', nargs='?', default='') -parser.add_argument('--volume', action='append') -parser.add_argument('--mount-volume', action='append') -parser.add_argument('--local-container', default=environ.get('B2C_LOCAL_CONTAINER', 'alpine:latest')) -parser.add_argument('--working-dir') -args = parser.parse_args() - -env = Environment(loader=FileSystemLoader(path.dirname(args.template)), +env = Environment(loader=FileSystemLoader(path.dirname(environ['B2C_JOB_TEMPLATE'])), trim_blocks=True, lstrip_blocks=True) -template = env.get_template(path.basename(args.template)) +template = env.get_template(path.basename(environ['B2C_JOB_TEMPLATE'])) values = {} -values['ci_job_id'] = args.ci_job_id -values['container_cmd'] = args.container_cmd -values['initramfs_url'] = args.initramfs_url -values['job_success_regex'] = args.job_success_regex -values['job_warn_regex'] = args.job_warn_regex -values['kernel_url'] = args.kernel_url -values['log_level'] = args.log_level -values['poweroff_delay'] = args.poweroff_delay -values['session_end_regex'] = args.session_end_regex -values['session_reboot_regex'] = args.session_reboot_regex +values['ci_job_id'] = environ['CI_JOB_ID'] +values['container_cmd'] = environ['B2C_TEST_SCRIPT'] +values['initramfs_url'] = environ['B2C_INITRAMFS_URL'] +values['job_success_regex'] = environ['B2C_JOB_SUCCESS_REGEX'] +values['job_warn_regex'] = environ['B2C_JOB_WARN_REGEX'] +values['kernel_url'] = environ['B2C_KERNEL_URL'] +values['log_level'] = environ['B2C_LOG_LEVEL'] +values['poweroff_delay'] = environ['B2C_POWEROFF_DELAY'] +values['session_end_regex'] = environ['B2C_SESSION_END_REGEX'] +values['session_reboot_regex'] = environ['B2C_SESSION_REBOOT_REGEX'] try: - values['tags'] = json.loads(args.tags) + values['tags'] = json.loads(environ['CI_RUNNER_TAGS']) except json.decoder.JSONDecodeError: - values['tags'] = args.tags.split(",") -values['template'] = args.template -values['timeout_boot_minutes'] = args.timeout_boot_minutes -values['timeout_boot_retries'] = args.timeout_boot_retries -values['timeout_first_minutes'] = args.timeout_first_minutes -values['timeout_first_retries'] = args.timeout_first_retries -values['timeout_minutes'] = args.timeout_minutes -values['timeout_overall_minutes'] = args.timeout_overall_minutes -values['timeout_retries'] = args.timeout_retries -exclusions = args.job_volume_exclusions.split(",") + values['tags'] = environ['CI_RUNNER_TAGS'].split(",") +values['template'] = environ['B2C_JOB_TEMPLATE'] +values['timeout_boot_minutes'] = environ['B2C_TIMEOUT_BOOT_MINUTES'] +values['timeout_boot_retries'] = environ['B2C_TIMEOUT_BOOT_RETRIES'] +values['timeout_first_minutes'] = environ['B2C_TIMEOUT_FIRST_MINUTES'] +values['timeout_first_retries'] = environ['B2C_TIMEOUT_FIRST_RETRIES'] +values['timeout_minutes'] = environ['B2C_TIMEOUT_MINUTES'] +values['timeout_overall_minutes'] = environ['B2C_TIMEOUT_OVERALL_MINUTES'] +values['timeout_retries'] = environ['B2C_TIMEOUT_RETRIES'] +exclusions = environ['B2C_JOB_VOLUME_EXCLUSIONS'].split(",") values['job_volume_exclusions'] = [excl for excl in exclusions if excl] -values['working_dir'] = args.working_dir - -assert(len(args.local_container) > 0) +values['working_dir'] = environ['CI_PROJECT_DIR'] # Use the gateway's pull-through registry caches to reduce load on fd.o. -values['local_container'] = args.local_container +values['local_container'] = environ['IMAGE_UNDER_TEST'] values['local_container'] = values['local_container'].replace( 'registry.freedesktop.org', '{{ fdo_proxy_registry }}' @@ -97,5 +67,5 @@ values['local_container'] = values['local_container'].replace( values['cmdline_extras'] = environ.get('B2C_KERNEL_CMDLINE_EXTRAS', '') -with open(path.splitext(path.basename(args.template))[0], "w") as f: +with open(path.splitext(path.basename(environ['B2C_JOB_TEMPLATE']))[0], "w") as f: f.write(template.render(values)) diff --git a/.gitlab-ci/test/gitlab-ci.yml b/.gitlab-ci/test/gitlab-ci.yml index a592de609a6..740c7ebf8d0 100644 --- a/.gitlab-ci/test/gitlab-ci.yml +++ b/.gitlab-ci/test/gitlab-ci.yml @@ -347,29 +347,7 @@ clang-format: # The Valve CI gateway receives jobs in a YAML format. Create a # job description from the CI environment. - python3 "$CI_B2C_ARTIFACTS"/generate_b2c.py \ - --ci-job-id "${CI_JOB_ID}" \ - --container-cmd "${B2C_TEST_SCRIPT}" \ - --initramfs-url "${B2C_INITRAMFS_URL}" \ - --job-success-regex "${B2C_JOB_SUCCESS_REGEX}" \ - --job-warn-regex "${B2C_JOB_WARN_REGEX}" \ - --kernel-url "${B2C_KERNEL_URL}" \ - --log-level "${B2C_LOG_LEVEL}" \ - --poweroff-delay "${B2C_POWEROFF_DELAY}" \ - --session-end-regex "${B2C_SESSION_END_REGEX}" \ - --session-reboot-regex "${B2C_SESSION_REBOOT_REGEX}" \ - --tags "${CI_RUNNER_TAGS}" \ - --template "${B2C_JOB_TEMPLATE}" \ - --timeout-boot-minutes "${B2C_TIMEOUT_BOOT_MINUTES}" \ - --timeout-boot-retries "${B2C_TIMEOUT_BOOT_RETRIES}" \ - --timeout-first-minutes "${B2C_TIMEOUT_FIRST_MINUTES}" \ - --timeout-first-retries "${B2C_TIMEOUT_FIRST_RETRIES}" \ - --timeout-minutes "${B2C_TIMEOUT_MINUTES}" \ - --timeout-overall-minutes "${B2C_TIMEOUT_OVERALL_MINUTES}" \ - --timeout-retries "${B2C_TIMEOUT_RETRIES}" \ - --job-volume-exclusions "${B2C_JOB_VOLUME_EXCLUSIONS}" \ - --local-container "${IMAGE_UNDER_TEST}" \ - --working-dir "$CI_PROJECT_DIR" + python3 "$CI_B2C_ARTIFACTS"/generate_b2c.py cat b2c.yml.jinja2