| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import os
- from dataclasses import dataclass, field
- from typing import Optional, List
- @dataclass
- class PiplineConfig:
- """封装流水线所有配置参数"""
- # gerrit配置
- gerrit_name: str = "jenkins"
- gerrit_host: str = "10.2.90.253"
- gerrit_port: int = 29418
- gerrit_changes: List[str] = field(default_factory=list)
- gerrit_flag: bool = False
- # 构建基础配置
- workspace: str = ""
- soc_project: str = ""
- soc_branch: str = ""
- mcu_release_version: str = ""
- soc_release_version: str = ""
- profile_mode: str = "Debug"
- # FTP配置
- ftp_root: str = ""
- deploy_image_local_dir: str = ""
-
- ftp_host: str = os.environ.get('ftpAddr', '10.2.90.252')
- ftp_port: int = int(os.environ.get('ftpPort', '21'))
- ftp_user: str = os.environ.get('ftpUser', 'ftpuser')
- ftp_password: str = os.environ.get('ftpPasword', '123456')
- # 分支
- repo_branch: str = ""
- auto_commit_branch: str = "AD26IDV01-dev"
- # 功能开关
- upgrade_package_bootloader: bool = False
- upgrade_package_camera: bool = False
- upgrade_package_recovery: bool = False
- factory_emmc_img_enable: bool = False
- secure_enable: bool = False
- # 构建快照
- snapshot: str = "default"
- build_user: str = ""
- # 自动提交控制
- auto_commit_server: bool = True
- # 二进制仓库列表
- binary_repos: List[str] = field(default_factory=lambda: [])
- # 路径
- mcu_dir: str = ""
- soc_dir: str = ""
- # manifest 仓库 URL
- mcu_manifest_url: str = ""
- soc_manifest_url: str = ""
- @classmethod
- def from_env(cls) -> 'PiplineConfig':
- """从环境变量中加载配置, 并处理shell脚本中的逻辑"""
- cfg = cls()
- # 基础路径
- cfg.workspace = os.environ.get("WORKSPACE", "")
- cfg.soc_project = os.environ.get('SOC_PROJECT', '')
- cfg.soc_branch = os.environ.get('SOC_BRANCH', '')
- cfg.mcu_release_version = os.environ.get('mcu_release_version', '')
- cfg.soc_release_version = os.environ.get('soc_release_version', '')
- cfg.build_user = os.environ.get('BUILD_USER', '')
- cfg.mcu_dir = os.path.join(cfg.workspace, 'mcu')
- cfg.soc_dir = os.path.join(cfg.workspace, 'soc')
- cfg.mcu_manifest_url = f"ssh://{cfg.gerrit_host}/INVO/MCU/HR/manifest"
- cfg.soc_manifest_url = f"ssh://{cfg.gerrit_host}/INVO/SOC/HR/manifest"
- # ---- 分支处理 ----
- cfg.repo_branch = cfg.soc_branch # Shell: REPO_BRANCH="$SOC_BRANCH"
- # ---- FTP 路径 ----
- cfg.ftp_root = f"HORIZON/J6B/{cfg.soc_project}" if cfg.soc_project else ""
- cfg.deploy_image_local_dir = f"{cfg.workspace}/{cfg.ftp_root}" if cfg.ftp_root else ""
- # ---- 二进制仓库目录 ----
- cfg.binary_repos = [f"{cfg.workspace}/soc/hbbin/mcubin/"]
- # ---- Gerrit ----
- cfg.gerrit_changes = os.environ.get('GERRIT_CHANGES', '')
- cfg.gerrit_flag = bool(cfg.gerrit_changes.strip()) if cfg.gerrit_changes else False
- # ---- 快照 ----
- cfg.snapshot = os.environ.get('SNAPSHOT', 'default')
- # ---- 功能开关 (字符串 -> 布尔) ----
- cfg.upgrade_package_bootloader = os.environ.get('upgrade_package_bootloader', 'false').lower() == 'true'
- cfg.upgrade_package_camera = os.environ.get('upgrade_package_camera', 'false').lower() == 'true'
- cfg.upgrade_package_recovery = os.environ.get('upgrade_package_recovery', 'false').lower() == 'true'
- cfg.factory_emmc_img_enable = os.environ.get('factory_emmc_img_enable', 'false').lower() == 'true'
- cfg.secure_enable = os.environ.get('secure_enable', 'false').lower() == 'true'
- # ---- 触发方式导致的默认值覆盖 ----
- # 原脚本:如果 BUILD_USER 为空(定时触发),则关闭部分功能
- if not cfg.build_user.strip():
- cfg.gerrit_changes = ""
- cfg.gerrit_flag = False
- cfg.upgrade_package_recovery = False
- cfg.upgrade_package_bootloader = False
- cfg.secure_enable = False
- cfg.factory_emmc_img_enable = False
- # ---- 自动提交策略 ----
- # Shell: AUTO_COMMIT_SERVER=1 仅当 GERRIT_FLAG=0
- cfg.auto_commit_server = not cfg.gerrit_flag
- # ---- Profile mode ----
- cfg.profile_mode = os.environ.get('PROFILE_MODE', 'Debug') # 原脚本有判断,但主流程未显式设置
- # ---- 额外常量 ----
- cfg.threads_num = 12 # Shell 中有 THREADS_NUM=12,但未使用,保留
- return cfg
|