# cicd_test_develop **Repository Path**: weitengfei_op/cicd_test_develop ## Basic Information - **Project Name**: cicd_test_develop - **Description**: 本仓库为cicd个人测试仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-09 - **Last Updated**: 2023-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ci_tool #### 介绍 依托于华为云&jenkins 自动化执行的CI门禁工具,包含流水线编译、打包、测试及静态检查 #### 软件架构 ``` /ci_tool ├── BuidDataCollectionSvr # 数据服务层 │ ├── BuidDataCollectionSvr.py # 主服务文件 flask 提供多个接口包括:分组服务、邮件发送、配置更新、资源利用率/构建数据查询 │ ├── comuptebuildgroup.py # 分组服务计算 │ ├── refresh_build_statistics.py # 定期刷新构建数据 │ └── cvr_function.py # 数据服务使用的函数 ├── ci_build # 流水线构建脚本层 │ ├── ci_build.py # 门禁构建主脚本 │ ├── cloud_build.py # 云端构建主脚本 │ ├── fetch_pr.py # 拉取pr │ ├── find404forCI.py # docs仓业务提供检查脚本 │ ├── findCNforCI.py # docs仓业务提供检查脚本 │ ├── findrela404forCI.py # docs仓业务提供检查脚本 │ ├── format_check.py # 格式化检查脚本 主要包括gn格式化检查和docs仓检查 │ ├── project_build.py # 执行编译 │ ├── reduce_unstripped_tdd_file.py # tdd用例精简脚本(测试领域定制) │ ├── sync_code.py # repo init & repo sync 、打running点 │ └── upload_result_to_mongo.py # 上传打包文件、构建log、打end点闭环编译 ├── ci_conf # 工具配置层 │ ├── .ssh # 已配置好公共账号信息的ssh │ ├── .gitconfig # 已配置好公共账号信息的gitconfig │ ├── common_config.py # 共用配置 用于各模块调用生成配置对象 │ ├── docker_file # 存放门禁自己制作镜像的Dockerfile │ └── kube_yaml # 存放kubenetes集群相关yaml文件 ├── common # 共用脚本收纳层 │ ├── Gitee_api.py # 码云api操作 │ ├── common_function.py # 一些共用函数 │ ├── datacenter.py # 华为云DDS mongo数据库操作 │ ├── manifest.py # manifest类 操作manifest xml │ └── rabbitmq_handle.py # rabbitmq操作函数 ├── consume_project # 消息消费脚本收纳层 │ ├── consume_end_to_be_finish.py # jenkins定时触发 将满足条件(所有pipeline为end)的event事件currentStatus置为end │ ├── consume_event_finish.py # jenkins定时触发 消费event状态为finish的数据 监控test和codecheck完成情况 打回报告到码云 闭环event打点 发送邮件 私信 │ ├── consume_mq_schedule.py # jenkins定时触发 消费CC_Build_Task_Dispatch队列消息 生成各资源池构建唯一构建号,打schedule点,并将数据推送到各资源池队列中 │ ├── consume_schedule.py # jenkins定时触发 消费各资源池队列消息 资源不足时排队,按优先级消费调起流水线 并将pipeline状态置为trigger │ ├── consume_submit.py # 合入队列消费脚本 定时从合入队列取任务,合入并发布tag │ ├── submit.py # 合入脚本 webhook触发式,检查PR是否满足合入条件并将合入信息推送到合入队列 │ ├── watch_timeout_event.py # 看护event,若120分钟仍未结束,则强制关闭该event │ └── watch_timeout_pipeline.py # 看护pipeline,处理异常流水线状态 ├── daily_build # 每日构建层 │ ├── daily_build.py # 每日构建主脚本 │ ├── daily_pipeline_apscheduler.py # 每日构建定时触发器 │ ├── daily_pipeline_monitor.py # jenkins定时触发 扫描daily流水线状态,并打点供看板使用 │ └── simple_sync_code.py # daily流水线下载代码脚本 不涉及挑单 ├── interception_control # 管控拦截层 │ ├── branch_owner_control.py # 要求特定分支的PR合入前需要特定人员审核评论approve │ ├── create_translation_issue.py # docs仓业务定制,自动提ISSUE │ ├── dco_control.py # 要求开发者在社区贡献前签署贡献协议DCO │ ├── interception_controller.py # 管控拦截控制器,所有管控拦截入口 │ ├── static_check.py # 单独触发静态检查脚本 │ └── translation.yaml # docs仓业务定制配置 ├── other_tools # 其他工具收纳层 │ ├── datacenter_clean.py # 自动清理数据库过期数据,打包归档到obs,删除过期数据 │ ├── generate_monthly_statistical_reports.py # 生成月度构建统计数据报告 │ ├── get_merged_pr_list_by_tag_collection.py # 获取指定时间段合入的PR列表,写入last_merged_pr_list.txt文件,供后续使用 │ ├── refresh_manifest_file.py # redis存储manifest自动刷新 webhook触发 │ ├── refresh_precise_dile.py # redis存储精准构建关系自动刷新 jenkins定时触发 │ ├── sync_mongo_cfg_to_consul.py # 将数据库配置同步到consul配置中心 │ └── trace_to_html_upload.py # 下载将给定的trace包,调用工具生成火焰图html文件 └── CC_Build_Task_Dispatch_Jenkins.py # 事件处理脚本 用于接收PR评论start build事件,调用分组服务,计算需要构建形态,生成schedule数据传入队列 ``` #### 使用说明 1. 本项目面向Gitee harmonyos开源社区,提供社区代码上库持续集成构建服务 2. 本项目依赖华为云 ECS devcloud DDS OBS SWR ELB 依赖jenkins 3. 使用本项目前,您需要准备如下内容: - 码云Gitee账号,并申请一个企业 - 华为云账号,开通devcloud DDS OBS SWR ELB等服务 - 在华为云购买几台ECS供jenkins master搭建和流水线构建 4. 服务搭建请参考docs目录下各指导文档 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request