@@ -521,45 +521,21 @@ def report_running_build_and_test_on_build_submission(self, web_url: str):
521521 url = url_for_tests ,
522522 )
523523
524- def run_copr_build_from_source_script (self ) -> TaskResults :
524+ def run_copr_build (self ) -> TaskResults :
525525 """
526- Run copr build using custom source method.
526+ Run copr build using either the custom source method (default)
527+ or the dist-git method if configured.
527528 """
528529 self ._srpm_model , self .run_model = SRPMBuildModel .create_with_new_run (
529530 project_event_model = self .db_project_event ,
530531 package_name = self .get_package_name (),
531532 )
532533 group = self ._get_or_create_build_group ()
534+ script = None
533535 try :
534- pr_id = self .metadata .pr_id
535-
536- # use correct git ref to identify most recent tag
537- if self .job_config .trigger == JobConfigTriggerType .pull_request :
538- merged_ref = self .pull_request_object .target_branch
539- elif self .job_config .trigger == JobConfigTriggerType .commit :
540- merged_ref = self .metadata .commit_sha
541- elif self .job_config .trigger == JobConfigTriggerType .release :
542- merged_ref = self .metadata .tag_name
543- else :
544- logger .warning (
545- f"Unable to determine merged ref for { self .job_config .trigger } " ,
546- )
547- merged_ref = None
548-
549- script = create_source_script (
550- url = self .metadata .project_url ,
551- ref = self .metadata .git_ref ,
552- pr_id = str (pr_id ) if pr_id else None ,
553- merge_pr = self .package_config .merge_pr_in_ci ,
554- target_branch = (
555- self .pull_request_object .target_branch if self .pull_request_object else None
556- ),
557- job_config_index = self .get_job_config_index (),
558- update_release = self .job_config .trigger != JobConfigTriggerType .release ,
559- release_suffix = self .job_config .release_suffix ,
560- package = self .job_config .package ,
561- merged_ref = merged_ref ,
562- )
536+ if not self .job_config .use_copr_dist_git_build :
537+ script = self ._prepare_source_script ()
538+
563539 build_id , web_url = self .submit_copr_build (script = script )
564540 except Exception as ex :
565541 return self .handle_build_submit_error (group , ex )
@@ -572,6 +548,37 @@ def run_copr_build_from_source_script(self) -> TaskResults:
572548
573549 return TaskResults (success = True , details = {})
574550
551+ def _prepare_source_script (self ) -> str :
552+ pr_id = self .metadata .pr_id
553+
554+ # use correct git ref to identify most recent tag
555+ if self .job_config .trigger == JobConfigTriggerType .pull_request :
556+ merged_ref = self .pull_request_object .target_branch
557+ elif self .job_config .trigger == JobConfigTriggerType .commit :
558+ merged_ref = self .metadata .commit_sha
559+ elif self .job_config .trigger == JobConfigTriggerType .release :
560+ merged_ref = self .metadata .tag_name
561+ else :
562+ logger .warning (
563+ f"Unable to determine merged ref for { self .job_config .trigger } " ,
564+ )
565+ merged_ref = None
566+
567+ return create_source_script (
568+ url = self .metadata .project_url ,
569+ ref = self .metadata .git_ref ,
570+ pr_id = str (pr_id ) if pr_id else None ,
571+ merge_pr = self .package_config .merge_pr_in_ci ,
572+ target_branch = (
573+ self .pull_request_object .target_branch if self .pull_request_object else None
574+ ),
575+ job_config_index = self .get_job_config_index (),
576+ update_release = self .job_config .trigger != JobConfigTriggerType .release ,
577+ release_suffix = self .job_config .release_suffix ,
578+ package = self .job_config .package ,
579+ merged_ref = merged_ref ,
580+ )
581+
575582 def _get_or_create_build_group (self ) -> CoprBuildGroupModel :
576583 if self ._copr_build_group_id is not None :
577584 group = CoprBuildGroupModel .get_by_id (self ._copr_build_group_id )
@@ -638,7 +645,7 @@ def get_latest_fedora_stable_chroot(self) -> str:
638645 def submit_copr_build (self , script : Optional [str ] = None ) -> tuple [int , str ]:
639646 """
640647 Create the project in Copr if not exists and submit a new build using
641- source script method
648+ either the custom source method (default) or the dist-git method if configured.
642649 Return:
643650 tuple of build ID and web url
644651 """
@@ -658,7 +665,18 @@ def submit_copr_build(self, script: Optional[str] = None) -> tuple[int, str]:
658665 },
659666 )
660667
661- if script :
668+ if self .job_config .use_copr_dist_git_build :
669+ build = self .api .copr_helper .copr_client .build_proxy .create_from_distgit (
670+ ownername = owner ,
671+ projectname = self .job_project ,
672+ packagename = self .job_config .package ,
673+ committish = self .metadata .git_ref ,
674+ # TODO: parametrize this hardcoded value
675+ distgit = "rhai" ,
676+ buildopts = buildopts ,
677+ )
678+
679+ elif script :
662680 build = self .api .copr_helper .copr_client .build_proxy .create_from_custom (
663681 ownername = owner ,
664682 projectname = self .job_project ,
0 commit comments