middleware

middleware

基于DORA指标的开源工程效能分析工具

Middleware是一款开源的工程效能分析工具,基于DORA指标评估团队表现。它集成多种CI/CD工具,自动收集和分析数据,提供可视化的关键绩效指标和自定义报告。该工具帮助工程管理者深入了解软件交付过程,优化工作流程,从而提升团队整体效率。

Middleware开源工程管理DORA指标性能分析Github开源项目

<br /><br />

<p align="center"> <a href="https://www.middlewarehq.com/"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/99b11e47-e047-4ddf-a65a-9d80aed9d7d4.png" alt="Middleware Logo" width=300px></a> </p> <p align="center"><b>释放开发者潜力的开源工程管理工具</b></p> <p align="center"> <a href="https://github.com/middlewarehq/middleware/actions/workflows/build.yml"><img alt="持续集成" src="https://img.shields.io/github/actions/workflow/status/middlewarehq/middleware/build.yml?branch=main&label=build&style=for-the-badge"></a> <a href="https://github.com/middlewarehq/middleware/graphs/commit-activity"><img alt="每月提交活动" src="https://img.shields.io/github/commit-activity/m/middlewarehq/middleware?style=for-the-badge" /></a> <a href="https://github.com/middlewarehq/middleware/graphs/contributors"><img alt="贡献者" src="https://img.shields.io/github/contributors-anon/middlewarehq/middleware?color=yellow&style=for-the-badge" /></a> <br/> <a href="https://opensource.org/licenses/Apache-2.0"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/baa10733-7ab2-4e43-ac0a-359eedde78c6.svg?style=for-the-badge&label=license" alt="许可证" /></a> <img src="https://img.shields.io/github/stars/middlewarehq/middleware?style=for-the-badge" alt="星标" /> </p> <p align="center"><a href="https://mhq.link/oss-community">加入我们的开源社区</a></p>

Middleware 开源

简介

Middleware 是一款开源工具,旨在帮助工程领导者使用 DORA 指标 衡量和分析团队的效能。DORA 指标是一组四个关键值,用于洞察软件交付性能和运营效率。

这些指标包括:

  • 部署频率:向生产环境或运营环境部署代码的频率。
  • 变更前置时间:从提交到部署到生产环境所需的时间。
  • 平均恢复时间:发生事故或故障后恢复服务所需的时间。
  • 变更失败率:导致失败或需要修复的部署占比。

目录

🚀 功能特性

  • 集成各种 CI/CD 工具
  • 自动收集和分析 DORA 指标
  • 关键性能指标可视化
  • 可定制的报告和仪表板
  • 集成流行的项目管理平台

✨ 快速开始

⭐ 安装 Middleware

  • 确保已安装并运行 docker

  • 打开终端并运行以下命令:

    docker volume create middleware_postgres_data docker volume create middleware_keys docker run --name middleware \ -p 3333:3333 \ -p 9696:9696 \ -p 9697:9697 \ -v middleware_postgres_data:/var/lib/postgresql/data \ -v middleware_keys:/app/keys \ -d middlewareeng/middleware:latest docker logs -f middleware

🛠️ 故障排除

  1. 如果要停止容器,请运行以下命令:

    docker stop middleware
  2. 要从远程获取最新版本并启动系统,请使用以下命令:

    docker pull middlewareeng/middleware:latest docker rm -f middleware || true docker run --name middleware \ -p 3333:3333 \ -v middleware_postgres_data:/var/lib/postgresql/data \ -v middleware_keys:/app/keys \ -d middlewareeng/middleware:latest docker logs -f middleware
  3. 如果看到类似 Conflict. The container name "/middleware" is already in use by container 的错误。
    在再次运行容器之前,执行以下命令:

    docker rm -f middleware
  4. 如果要删除容器中保存的所有数据,可以运行以下命令删除创建的卷:

    docker volume rm middleware_postgres_data middleware_keys

👩‍💻 开发者设置

☁️ 使用 GitPod

Gitpod 支持在远程机器上进行开发,如果您的机器不支持本地运行项目,它可以帮助您开始使用 Middleware。

如果您想在本地运行项目,可以使用 docker 进行设置手动设置所有内容

  1. 点击下方按钮在 Gitpod 中打开此项目。

  2. 这将在您的浏览器中打开一个配置完善的工作区,已安装所有必要的依赖项。

在 Gitpod 中打开

初始化后,您可以在 gitpod 实例的 3333 端口访问服务器。

🐳 使用 Docker

如果您尚未安装 Docker,请在此处安装 Docker。 确保 Docker 正在运行。

  1. 克隆仓库

    git clone https://github.com/middlewarehq/middleware
  2. 进入项目目录

    cd middleware
  3. 在项目根目录运行 dev.sh 脚本 🪄
    ./dev.sh 会创建一个包含所需开发环境的 .env 文件,并运行一个 CLI,该 CLI 会完成从使用 docker compose watch 跟踪容器到提供不同服务日志的所有繁重工作。
    使用方法如下:

    ./dev.sh

    您可以更新 env.example 并设置 ENVIRONMENT=prod 以在生产环境中运行。
    如果需要对端口进行任何更改,可以相应地更新 docker-compose.yml 文件。

  4. 访问应用程序: 项目运行后,通过网络浏览器访问 http://localhost:3333 来使用应用程序。 此外,其他服务可以通过以下方式访问:

    • 分析服务器可在 http://localhost:9696 访问。
    • 同步服务器可在 http://localhost:9697 访问。
    • PostgreSQL 数据库可通过以下方式访问:主机:localhost,端口:5434,用户名:postgres,密码:postgres,数据库名称:mhq-oss
    • Redis 服务器可通过以下方式访问:主机:localhost,端口:6385
  5. 查看日志:尽管 CLI 会跟踪所有日志,但可以在不同的终端中使用以下命令查看容器内运行的服务日志:

    前端日志

    docker exec -it middleware-dev tail --lines 500 -f /var/log/web-server/web-server.log

    后端 API 服务器日志

    docker exec -it middleware-dev tail --lines 500 -f /var/log/apiserver/apiserver.log

    后端同步服务器日志

    docker exec -it middleware-dev tail --lines 500 -f /var/log/sync_server/sync_server.log

    Redis 日志

    docker exec -it middleware-dev tail --lines 500 -f /var/log/redis/redis.log

    PostgreSQL 日志

    docker exec -it middleware-dev tail --lines 500 -f /var/log/postgres/postgres.log

🛠️ 手动设置

要在本地设置 middleware,请按照以下步骤操作:

  1. 克隆仓库

    git clone https://github.com/middlewarehq/middleware.git
  2. 进入项目目录

    cd middleware
  3. 运行 Redis 和 PostgreSQL 容器

    如果您尚未安装 Docker,请在此处安装 Docker。

    运行以下命令使用 Docker 运行 PostgreSQL 和 Redis。

    cd database-docker && docker-compose up -d

    如果您不喜欢使用 Docker,可以选择手动安装 PostgreSQLRedis

    使用或开发 Middleware 完成后,您可以选择关闭这些正在运行的容器。(注意:如果您正在按照本文档操作并尝试运行 Middleware,请不要执行此操作。)

    cd database-docker/ docker-compose down -v
  4. 生成加密密钥

    在项目根目录中运行以下命令生成项目的加密密钥:

    cd setup_utils && . ./generate_config_ini.sh && cd ..
  5. 后端服务器设置

    • 安装 Python 版本 3.11.6

      • 如果您的机器上没有 Python,可以从这里安装。

      • 安装 pyenv

        git clone https://github.com/pyenv/pyenv.git ~/.pyenv
      • 将 pyenv 添加到您的 shell 配置文件(.bashrc、.bash_profile、.zshrc 等):

        echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
      • 重新加载您的 shell:

        source ~/.bashrc
        
    • 进入后端目录创建虚拟环境

      cd backend python -m venv venv
    • 激活虚拟环境

      . venv/bin/activate
    • 安装依赖

      pip install -r requirements.txt -r dev-requirements.txt
    • 在根目录创建一个 .env 文件,并添加以下环境变量,如果需要,请替换为您自己的值:

      DB_HOST=localhost DB_NAME=mhq-oss DB_PASS=postgres DB_PORT=5434 DB_USER=postgres REDIS_HOST=localhost REDIS_PORT=6385 ANALYTICS_SERVER_PORT=9696 SYNC_SERVER_PORT=9697 DEFAULT_SYNC_DAYS=31
    • 启动后端服务器

      • 切换到 analytics_server 目录

        cd analytics_server
      • 对于后端分析服务器:

        flask --app app --debug run --port 9696
      • 对于后端同步服务器:

        flask --app sync_app --debug run --port 9697

        注意:在启动分析服务器后,请在新的终端窗口中激活虚拟环境后再启动同步服务器。

  6. Web 服务器设置

    • 安装 NodeJs 16.17 (LTS),可以手动安装或使用 nvmvolta 等工具。

    • 安装 yarn 包管理器

      npm install --global yarn
    • 切换到 web-server 目录并安装软件包

      cd web-server yarn
    • 启动 web-server

      yarn dev
  7. 访问应用程序: 项目运行后,通过网络浏览器访问 http://localhost:3333 来使用应用程序。
    此外:

🚀 使用方法

产品演示

  • 按照上述步骤设置项目。
  • 从代码提供商生成并添加您的PAT令牌。
  • 创建团队并为团队选择存储库。
  • 查看团队的Dora指标。
  • 更新与事故过滤器、排除的拉取请求、生产分支等相关的设置,以获得更准确的数据。

📖 我们如何计算DORA

Middleware可以仅使用GitHub数据显示DORA指标。目标是为所有使用Git数据的人提供DORA指标,而不考虑其他集成。

DORA指标源自拉取请求、部署和事故。

为简单起见,我们同步您的拉取请求数据,并将已回滚的拉取请求归类为事故,将已合并的拉取请求归类为部署。

变更前置时间

  • 前置时间包括从第一次提交到PR开启的时间、首次响应时间、返工时间、合并时间和合并到部署时间。
  • 在使用基于git的数据计算DORA时,PR合并被视为部署,因此合并到部署时间被视为0,而其他时间组成部分保持不变。

部署频率

  • 此指标衡量代码变更部署到生产环境的频率。
  • 当将PR合并视为部署时,这也可以表示PR合并的每日/每周/每月频率。

平均恢复时间(MTTR)

  • MTTR衡量团队在生产环境发生故障后恢复服务的速度。
  • 团队的平均事故解决时间用于计算其MTTR。
  • 当将回滚PR视为事故时,事故的解决时间从原始PR合并到回滚PR合并的时间计算。

变更失败率(CFR)

  • CFR量化导致生产环境服务中断或故障的变更百分比,有助于评估部署过程的稳定性和可靠性。
  • CFR通过在一个时间间隔内将事故与部署关联来计算;每次部署可能有多个或没有事故。
  • 可以与任何事故关联的部署被视为导致故障或中断。
  • 使用导致中断的部署占总部署的比例来确定CFR。

🛣️ 路线图

即将推出!

❤️ 贡献指南

贡献者指标

要开始为middleware做出贡献,请查看我们的CONTRIBUTING.md

我们感谢您的贡献,并期待与您合作,使Middleware变得更好!

👨‍💻 开发者自动化

本节包含一些自动化脚本,可以生成样板代码以扩展某些功能并更快地发布 🚀

1. 在后端添加新设置

  • 背景:最初,添加新设置需要了解设置系统的上下文,在一些文件中进行更改,并根据新设置类结构制作适配器和默认值。
  • 现在可以通过在./backend/dev_scripts目录中运行python make_new_setting.py脚本来完成此操作

如果您在根目录中,可以运行:

python ./backend/dev_scripts/make_new_setting.py
  • 以一致的格式输入设置名称。
  • 添加所需的键及其类型。输入完所有字段后,输入done
  • 更新导入和代码格式。
  • 您就可以开始了 :tada:
  • 注意:对于设置中更复杂的非基本类型(如uuid、枚举等),您需要对生成的适配器进行修改。

https://github.com/middlewarehq/middleware/assets/70485812/f0529fa7-a2cb-44b1-ae07-2a7c97f56bef

⛓️ 安全指南

要开始为middleware做出贡献,请查看我们的SECURITY.md

我们期待您在保持Middleware安全方面发挥作用!

许可证

本项目采用Apache 2.0许可证 - 有关详细信息,请参阅LICENSE.md文件。

横幅

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多