logo
4
2
Login

🏗️ CNB 构建平台自动化工具

这是一个基于 PyWebIO 的Web界面工具,旨在简化与CNB构建平台的交互,实现自动化触发、监控和管理构建流程。

✨ 主要功能

  • 🚀 一键构建: 一键触发构建。
  • 🔄 实时监控: 在Web界面上实时展示构建进度,包括流水线详情和每个阶段的状态。
  • 📚 历史记录: 将每次构建的详细信息(如提交信息、状态、耗时等)保存在本地数据库中,方便随时查阅。
  • 📥 制品下载: 构建成功后,提供直接下载构建制品的链接。
  • 📋 日志查看: 方便地一键跳转到CNB平台的构建日志页面。
  • ⚙️ 配置简单: 只需在脚本中填写您的访问令牌和仓库路径即可开始使用。

📸 项目截图

构建主界面

🛠️ 安装与配置

1. 环境准备

确保您的环境中已安装 Python 以及 uv。

2. 安装依赖

项目推荐使用 uv 作为包管理工具。您可以通过以下命令安装项目及其所有依赖项:

pip install uv uv sync

这会自动从 pyproject.toml 文件中读取并安装所需的库。

3. 配置脚本

打开 cnb_build_platform.py 文件,找到顶部的用户配置区域,并填入您的个人信息:

# =============================================================== # 用户配置区域 # 请在这里填写您的CNB API访问令牌和仓库路径 # =============================================================== ACCESS_TOKEN = "YOUR_ACCESS_TOKEN" # 在这里替换为你的访问令牌 REPO_PATH = "username/repo-name" # 在这里替换为你的仓库路径, 例如: "username/repo-name" PIPELINE_NAME = "api_trigger_build" # 在这里替换为你的流水线名称, 例如: "api_trigger_build" BUILD_ENV = {"buildtrigger": "web_ui"} # 在这里替换为触发时需要传入的环境变量 ARTIFACT_NAME = "trigger.tar.gz" # 在这里替换为你的附件名称, 例如: "trigger.tar.gz" # ===============================================================
  • ACCESS_TOKEN: 您的CNB平台API访问令牌。
  • REPO_PATH: 您的代码仓库路径。
  • PIPELINE_NAME: 您要触发的流水线名称。
  • BUILD_ENV: 触发构建时需要传入的环境变量。
  • ARTIFACT_NAME: 您在 .cnb.yml 中定义的附件名称,用于生成下载链接。

4. 配置CNB工作流

除了配置脚本,您还需要在您的代码仓库根目录下创建一个 .cnb.yml 文件,用于定义构建流水线。

重要提示: 为了能够被此工具通过API触发,您的工作流(流水线)名称 必须api_trigger_ 开头。

下面是一个 .cnb.yml 的示例:

main: api_trigger_build: - docker: image: node:22 # 流水线执行环境 stages: - name: build script: | echo "start build..." echo "$buildtrigger" > trigger.txt tar -czvf trigger.tar.gz trigger.txt - name: 上传附件 image: cnbcool/attachments:latest settings: attachments: - ./trigger.tar.gz

在这个例子中,流水线名称是 api_trigger_build,符合API触发的要求。您需要将脚本配置中的 PIPELINE_NAME 设置为 api_trigger_build

🚀 如何使用

配置完成后,直接运行主脚本即可启动Web服务:

python cnb_build_platform.py

服务启动后,您会看到以下提示:

🚀 启动 CNB构建平台Web界面... 📍 访问地址: http://localhost:9004 🛑 按 Ctrl+C 停止服务

现在,您可以通过浏览器访问 http://localhost:9004 来使用本工具。

📦 主要依赖

  • pywebio: 用于快速构建Web用户界面。
  • requests: 用于发送HTTP请求与CNB API进行交互。

📄 许可证

本项目基于 MIT 许可证开源。

About

No description, topics, or website provided.
Language
Python82.8%
Markdown13.2%
TOML2.7%
gitignore1.3%