def handle_pull_request(self): if not self.job.metadata.get("targets"): logger.error( "'targets' value is required in packit config for copr_build job" ) collaborators = self.project.who_can_merge_pr() r = BuildStatusReporter(self.project, self.event.commit_sha) if self.event.github_login not in collaborators: msg = "Only collaborators can trigger Packit-as-a-Service" r.set_status("failure", msg, PRCheckName.get_build_check()) return HandlerResults(success=False, details={"msg": msg}) cbh = CoprBuildHandler(self.config, self.package_config, self.project, self.event) handler_results = cbh.run_copr_build() if handler_results["success"]: # Testing farm is triggered just once copr build is finished as it uses copr builds # todo: utilize fedmsg for this. test_job_config = self.get_tests_for_build() if test_job_config: testing_farm_handler = GithubTestingFarmHandler( self.config, test_job_config, self.event) testing_farm_handler.run() else: logger.debug("Testing farm not in the job config.") return HandlerResults(success=True, details={})
def build_handler(metadata=None, trigger=None): if not metadata: metadata = { "owner": "nobody", "targets": [ "fedora-29-x86_64", "fedora-30-x86_64", "fedora-31-x86_64", "fedora-rawhide-x86_64", ], } jobs = [ JobConfig( job=JobType.copr_build, trigger=trigger or JobTriggerType.pull_request, metadata=metadata, ) ] pkg_conf = PackageConfig(jobs=jobs, downstream_package_name="dummy") event = Parser.parse_pr_event(pull_request()) handler = CoprBuildHandler( config=ServiceConfig(), package_config=pkg_conf, project=GitProject("", GitService(), ""), event=event, ) handler._api = PackitAPI(ServiceConfig, pkg_conf) return handler
def run(self) -> HandlerResults: collaborators = self.project.who_can_merge_pr() if self.event.github_login not in collaborators | self.config.admins: msg = "Only collaborators can trigger Packit-as-a-Service" self.project.pr_comment(self.event.pr_id, msg) return HandlerResults(success=True, details={"msg": msg}) cbh = CoprBuildHandler(self.config, self.package_config, self.project, self.event) handler_results = cbh.run_copr_build() return handler_results
def handle_pull_request(self): if not self.job.metadata.get("targets"): msg = "'targets' value is required in packit config for copr_build job" self.project.pr_comment(self.event.pr_id, msg) return HandlerResults(success=False, details={"msg": msg}) collaborators = self.project.who_can_merge_pr() r = BuildStatusReporter(self.project, self.event.commit_sha) if self.event.github_login not in collaborators | self.config.admins: msg = "Only collaborators can trigger Packit-as-a-Service" check_names = [ f"{PRCheckName.get_build_check(x)}" for x in self.job.metadata.get("targets") ] r.report("failure", msg, check_names=check_names) return HandlerResults(success=False, details={"msg": msg}) cbh = CoprBuildHandler(self.config, self.package_config, self.project, self.event) handler_results = cbh.run_copr_build() return handler_results
def run(self) -> HandlerResults: collaborators = self.project.who_can_merge_pr() if self.event.github_login not in collaborators: msg = "Only collaborators can trigger Packit-as-a-Service" self.project.pr_comment(self.event.pr_id, msg) return HandlerResults(success=False, details={"msg": msg}) cbh = CoprBuildHandler(self.config, self.package_config, self.project, self.event) handler_results = cbh.run_copr_build() if handler_results["success"]: # Testing farm is triggered just once copr build is finished as it uses copr builds # todo: utilize fedmsg for this. test_job_config = self.get_tests_for_build() if test_job_config: testing_farm_handler = GithubTestingFarmHandler( self.config, test_job_config, self.event) testing_farm_handler.run() else: logger.debug("Testing farm not in the job config.") return HandlerResults(success=True, details={}) return handler_results