王昭宁/ 高级客户经理

高级客户经理

  • 电话(微信)
    17669512663
  • QQ 号码
    3684528290

GitFox 4.5正式发布,流水线支持任务并行与挂载卷,制品支持批量上传,并优化交互体验。

发布:gitfox 于 2026-11-13 16:21:52 最后编辑:孟笑宇 于 2026-11-13 16:50:40 64 次查看

大家好!GitFox 独立版本 4.5 发布啦!

本次发布,流水线支持任务并行与挂载卷,制品支持批量上传,并优化交互体验。

一、新增功能点

流水线支持任务并行

在编排流水线时,可将需要同时执行的多个任务放入同一并行组。流水线执行时,组内任务会同时执行,不再逐个排队等待;待组内任务全部执行完成后,再继续执行后续任务,从而缩短流水线整体耗时。

流水线支持自定义挂载卷

流水线新增挂载卷能力,解决阶段内任务间的数据传递、以及依赖反复下载这两个问题。卷在阶段上声明一次,该阶段内的任务就都能挂载使用,并按用途分为两类:

  • 临时卷:为同一阶段的任务提供共享读写空间,阶段结束自动清理,适合传递构建产物、交换中间文件。
  • 宿主机卷:把依赖缓存持久保留在宿主机上,下次构建直接命中,省去重复下载,编译效率明显提升。

制品支持文件批量上传

制品现支持批量上传,可一次选择多个文件上传至当前目录,单次最多 50 个,替代原有的单文件逐个上传方式,节省操作时间。

二、功能优化

  • 代码详情页编辑器代码行尾增加blame信息。
  • 代码详情页增加文件菜单,支持文件下载。
  • 代码详情页支持md文件预览。
  • 代码详情页代码浏览链接增加锚点功能。
  • 代码详情页代码详情页左侧文件树组件交互优化。
  • 流水线编排页面编辑变量与触发规则时,页面表单改为弹窗展示。
  • 流水线列表页增加最近更新时间字段,支持排序功能。
  • 流水线执行历史页面,点击流水线名称可直接跳转至流水线执行详情页。
  • 制品库文件列表的制品目录字段仅展示子目录。
  • 制品库文件列表改为可调整列宽的高级表单。
  • 后台变量功能,添加变量时变量值的输入框样式统一。

三、新增功能说明

▼ 流水线支持任务并行

在流水线编排时,把任务类型设置为并行任务(type: parallel),组内任务写在它的 spec.steps 下即可。并行组本身不是一个执行节点,只负责组织任务与并发调度;组内任务互不依赖,会同时启动,全部执行完成后才继续执行并行组之后的任务。

完整语法见 流水线语法与环境变量。

代码示例:

version: 1
kind: pipeline
spec:
  stages:
    - id: ldbvux8d
      name: 阶段
      type: ci
      spec:
        steps:
          - id: wllmnoug_build_run
            name: 代码克隆
            type: run
            spec:
              script:
                - echo clone
          - id: build-parallel
            name: 并行构建
            type: parallel          # 并行任务
            spec:
              steps:                # 组内任务,并发执行
                - id: frontend
                  name: 前端构建
                  type: run
                  spec:
                    script:
                      - echo frontend-start
                      - sleep 2
                      - echo frontend-end
                - id: backend
                  name: 后端构建
                  type: run
                  spec:
                    script:
                      - echo backend-start
                      - sleep 2
                      - echo backend-end
          - id: allmnoug_build_run
            name: 产物上传
            type: run
            spec:
              script:
                - echo upload            # 组内任务全部结束后执行

▼ 流水线支持自定义挂载卷

流水线中每个任务都运行在独立容器里,任务结束即销毁,默认只有内置的 _workspace 卷用于共享克隆下来的源码。配置自定义挂载卷后,可以实现两类场景:

  • 在任务之间共享数据;
  • 把依赖缓存保留到宿主机,供后续构建复用。

卷采用两级配置:在阶段上声明卷(volumes),在任务上挂载卷(mount)。

第一步:在阶段上声明卷

在阶段的 spec.volumes 中声明卷,指定卷名与卷类型:

stages:
  - type: ci
    spec:
      volumes:
        - name: cache           # 卷名,阶段内唯一
          type: temp            # host / temp
  • 卷名:阶段内唯一,用于后续在任务上引用。
  • 卷类型:可选 host 或 temp,区别见下文「卷类型」一节。

第二步:在任务上挂载卷

在任务的 spec.mount 中按卷名挂载到容器内的绝对路径。同一个卷可以挂给多个任务,从而在任务之间传递数据:

steps:
  - name: 写入
    type: run
    spec:
      mount:
        - name: cache
          path: /data
      script:
        - echo hello > /data/hello.txt
  - name: 读取
    type: run
    spec:
      mount:
        - name: cache
          path: /data
      script:
        - cat /data/hello.txt

卷类型

卷类型有两种,分别对应不同的数据生命周期:

类型 说明
临时卷(temp) 由运行器创建,用于同一阶段内任务间的数据共享,阶段结束后自动清理。
宿主机卷(host) 把宿主机目录挂进容器,数据跨构建保留,适合存放依赖缓存与构建缓存。
volumes:
  - name: go-cache
    type: host
    spec:
      path: /data/gitfox/go-cache     # 宿主机绝对路径


效果示例

以 Go 项目为例,将 $GOMODCACHE 指向宿主机卷后,第二次构建可直接命中模块缓存,示例项目中编译耗时由 20 秒降至 3 秒。

其他语言缓存目录可参考:

语言 需挂载的缓存目录
Node.js ~/.npm
Python ~/.cache/pip
Maven ~/.m2/repository

注意事项

  • 仅限 CI 阶段:卷为阶段级配置,只在 type: ci 的阶段中声明,跨阶段不共享。
  • 卷名限制:卷名在阶段内唯一,且不能使用 _workspace、_addons、_docker_socket、socketDir 等保留名。
  • 路径要求:挂载路径必须是绝对路径,同一任务内的挂载路径不能重复。
  • 工作区覆盖:若把用户卷挂到内置工作区路径 /gitfox,用户挂载优先、内置工作区挂载会被跳过,该任务将不再与其他任务共享工作区内容。

完整说明见 stage 自定义挂载卷使用说明。

▼ 制品库支持文件批量上传

通用文件类型制品库在文件上传时,可以一次选择多个文件,也可以直接把文件拖拽到上传区域,单次最多支持 50 个文件。上传完成后,所选文件会按原文件名在当前目录下分别生成制品,并展示在文件列表中,可统一进行查看与下载。

当上传文件与库中已有文件重名时,系统会给出提示,确认后可覆盖上传。

四、下载链接

类别 地址
独立版本镜像 hub.zentao.net/app/gitfox-front:4.5
GitFox 引擎 hub.zentao.net/app/gitfox-server:4.5
部署教程 查看部署教程
源码包 php8.4 源码包

最后编辑:孟笑宇 于 2026-11-13 16:50:40

Site-Footer
王昭宁 高级客户经理
  • 17669512663
  • 3684528290