__main__.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import os
  2. import sys
  3. import signal
  4. import logging
  5. from ap_git import GitRepo
  6. from build_manager import BuildManager
  7. from builder import Builder
  8. from metadata_manager import (
  9. APSourceMetadataFetcher,
  10. VehiclesManager,
  11. )
  12. from logging.config import dictConfig
  13. dictConfig({
  14. 'version': 1,
  15. 'formatters': {
  16. 'default': {
  17. 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
  18. },
  19. },
  20. 'handlers': {
  21. 'stream': {
  22. 'class': 'logging.StreamHandler',
  23. 'level': 'INFO',
  24. 'formatter': 'default',
  25. 'stream': sys.stdout,
  26. },
  27. },
  28. 'loggers': {
  29. 'root': {
  30. 'level': 'INFO',
  31. 'handlers': ['stream'],
  32. },
  33. },
  34. })
  35. if __name__ == "__main__":
  36. logger = logging.getLogger(__name__)
  37. basedir = os.path.abspath(os.getenv("CBS_BASEDIR"))
  38. workdir = os.path.abspath('/workdir')
  39. repo = GitRepo.clone_if_needed(
  40. source="https://github.com/ardupilot/ardupilot.git",
  41. dest=os.path.join(workdir, 'ardupilot'),
  42. )
  43. ap_metafetch = APSourceMetadataFetcher(
  44. ap_repo=repo
  45. )
  46. vehicles_manager = VehiclesManager()
  47. manager = BuildManager(
  48. outdir=os.path.join(basedir, 'artifacts'),
  49. redis_host=os.getenv('CBS_REDIS_HOST', default='localhost'),
  50. redis_port=os.getenv('CBS_REDIS_PORT', default='6379')
  51. )
  52. builder = Builder(
  53. workdir=workdir,
  54. source_repo=repo,
  55. )
  56. # Set up signal handlers for graceful shutdown
  57. def signal_handler(signum, frame):
  58. signame = signal.Signals(signum).name
  59. logger.info(f"Received {signame}, initiating graceful shutdown...")
  60. builder.shutdown()
  61. signal.signal(signal.SIGTERM, signal_handler)
  62. signal.signal(signal.SIGINT, signal_handler)
  63. logger.info("Builder starting...")
  64. builder.run()
  65. logger.info("Builder exited gracefully")