code: def run(self):
          
          # Only run if the build was successful
          if self.workflow.build_process_failed:
              self.log.info("Not importing failed build to koji")
              return
  
          self.session = get_koji_session(self.workflow, self.koji_fallback)
  
          server_dir = get_koji_upload_dir(self.workflow)
  
          koji_metadata, output_files = self.combine_metadata_fragments()
  
          if is_scratch_build():
              self.upload_scratch_metadata(koji_metadata, server_dir, self.session)
              return
  
          try:
              for output in output_files:
                  if output.file:
                      self.upload_file(self.session, output, server_dir)
          finally:
              for output in output_files:
                  if output.file:
                      output.file.close()
  
          try:
              build_info = self.session.CGImport(koji_metadata, server_dir)
          except Exception:
              self.log.debug("metadata: %r", koji_metadata)
              raise
  
          # Older versions of CGImport do not return a value.
          build_id = build_info.get("id") if build_info else None
  
          self.log.debug("Build information: %s",
                         json.dumps(build_info, sort_keys=True, indent=4))
  
          return build_id
docs: Run the plugin.