| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import os
- import sys
- import signal
- import logging
- from ap_git import GitRepo
- from build_manager import BuildManager
- from builder import Builder
- from metadata_manager import (
- APSourceMetadataFetcher,
- VehiclesManager,
- )
- from logging.config import dictConfig
- dictConfig({
- 'version': 1,
- 'formatters': {
- 'default': {
- 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
- },
- },
- 'handlers': {
- 'stream': {
- 'class': 'logging.StreamHandler',
- 'level': 'INFO',
- 'formatter': 'default',
- 'stream': sys.stdout,
- },
- },
- 'loggers': {
- 'root': {
- 'level': 'INFO',
- 'handlers': ['stream'],
- },
- },
- })
- if __name__ == "__main__":
- logger = logging.getLogger(__name__)
- basedir = os.path.abspath(os.getenv("CBS_BASEDIR"))
- workdir = os.path.abspath('/workdir')
- repo = GitRepo.clone_if_needed(
- source="https://github.com/ardupilot/ardupilot.git",
- dest=os.path.join(workdir, 'ardupilot'),
- )
- ap_metafetch = APSourceMetadataFetcher(
- ap_repo=repo
- )
- vehicles_manager = VehiclesManager()
- manager = BuildManager(
- outdir=os.path.join(basedir, 'artifacts'),
- redis_host=os.getenv('CBS_REDIS_HOST', default='localhost'),
- redis_port=os.getenv('CBS_REDIS_PORT', default='6379')
- )
- builder = Builder(
- workdir=workdir,
- source_repo=repo,
- )
- # Set up signal handlers for graceful shutdown
- def signal_handler(signum, frame):
- signame = signal.Signals(signum).name
- logger.info(f"Received {signame}, initiating graceful shutdown...")
- builder.shutdown()
- signal.signal(signal.SIGTERM, signal_handler)
- signal.signal(signal.SIGINT, signal_handler)
- logger.info("Builder starting...")
- builder.run()
- logger.info("Builder exited gracefully")
|