Plane项目管理部署和试用

PingCode,Gitlab

Views:  times Updated on November 18, 2024 Posted by elmagnifico on October 30, 2024

Foreword

部署试用Plane,在其他几个开源不给力以后,希望都寄托到了Plane身上了

Plane拥有30K的星,对比其他开源确实有一些独到之处,整体设计也很现代化,响应式布局

部署

https://github.com/makeplane/plane

官方有提供一键部署脚本,直接跑就行了

curl -fsSL https://prime.plane.so/install/ | sh -

这个脚本必须试用域名,如果只是本地测试使用,还是用社区版本

image-20241030110924410

社区版

创建文件夹

mkdir plane-selfhost
cd plane-selfhost

拉取稳定版

curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh

如果想使用预览版,可以试一下这里

export RELEASE=preview
curl -fsSL https://raw.githubusercontent.com/makeplane/plane/$RELEASE/deploy/selfhost/install.sh | sed  's@BRANCH=master@BRANCH='"$RELEASE"'@' > setup.sh

加权限,启动

chmod +x setup.sh
./setup.sh

image-20241030111453722

不出意外的话,这里就要出意外了

Plane supports amd64
Syncing environment variables...
Environment variables synced successfully
Updating custom variables...
Custom variables updated successfully
unknown flag: --policy

Failed to pull the images. Exiting...

看了一下原始代码,主要是拉取镜像时,他加了一个限制,导致拉不下来

image-20241030112244113

docker-compose pull --policy always

去掉以后成功拉下来镜像,尝试启动

image-20241030113124091

正常启动了

image-20241030113112841

初始化设置

image-20241030113350523

这里可以配置登录授权,Gitlab也是支持的,这样就能打通账号

  • 官网没有给Gitlab的教程和相关授权设置

image-20241030113815886

在Gitlab那边新建一个应用,给出回调地址和应用ID和Secret即可

  • 授权,我是在Gitlab那边给了所有权限

image-20241030114707082

image-20241030113904390

也可以把OpenAI结合进来,准备好以后就可以创建workspace,这里就可以直接使用Gitlab登录

image-20241030114205636

Gitlab授权没问题就可以进到下一步了

image-20241030114039869

试用

image-20241030115053699

Plane的定价有这么几个挡位,这里面Free和One最大区别就是能不能预览全局的Cycles,人数上的限制都还好说

Cycles

进入以后发现这个Cycles是不能使用的,工作空间中的Cycles是无法使用的,但是每个独立项目的Cycles可以使用

image-20241030115030609

这样就是纵览全局稍微有些不方便,但是总体还是可以的

Project

image-20241030115652170

创建计划和子计划,非常流程,比云端要好很多

image-20241030120041068

新建敏捷周期,cycle不太好的点是没有类似敏捷的工期安排点数,每个任务没有明显点数的限制,排期时没有很明显的点数提示

image-20241030120027594

  • Cycle的日期不能重叠,这样其实有点问题,对于那种需要长期追踪的任务,短周期和长周期就不能同时启动

将刚才的计划和子计划加入其中,基本没啥问题

image-20241030140807437

甘特图没问题

image-20241030140830421

看板这边切换任务也没问题,状态都会自动改变

  • 但是如果子任务切状态,父任务是不会切的,比子任务已经是Done了,但是父任务可能还是Backlog

Plane将milestone或者epic之列的顶级规划作为modules,模块。

image-20241030141043193

也可以将现存的计划全部加入到module中,整体状态会自动切换。多给了一个视角来完成这个事情

Intake,这个比较像工单、测试反馈、产品需求,当这里被接受以后,他就会转化成一个任务,进入排期

image-20241030182604228

Pages,是一个markdown文档,比较简单

image-20241030182846429

只支持3级目录,不支持更多的文档分级、分层

设置中,任务状态可以增加自定义的状况,但是不能修改基础属性,比如Backlog、Started这种

image-20241030183415433

支持自定义标签,给每个任务贴上,后续可以使用view视图来筛选

image-20241030183526233

评估系统,其实就是工期估算,默认是使用的日期,在这里就可以自定义成点数、时间、日历的模式,具体的点数模型也可以自己设置

image-20241030183604087

  • 不过这里模型只能设置成6个等级
  • 没有上限的限制,似乎可以无限在一个周期里加内容

最后的这里是一点点自动关闭issue的情况,比如时间很久

image-20241030183803923

View

image-20241030141204253

平常常用的还有一个View视图,这个相当于是自定义筛选表,可以根据条件显示出来对应信息

前面说到工作空间的Cycles非Pro是无法使用的,那么就可以通过View变相实现Cycles的功能,可以看到全局情况下,成员工作的分配情况

image-20241030143616671

  • 这个View界面有个小问题,他不能显示第三级任务,最多只能显示到二级

设置

image-20241030142949090

成员权限这里很简单,只有简单的成员、管理员、宾客这么几种

image-20241030142659238

Plane不限制导出数据,所以后续就算换平台也是没问题的

God界面

http://你的地址/god-mode/general/

Plane初始化时的管理员界面,从普通界面是进不去的,得通过这个连接进

进去以后就可以修改开始设置的授权、AI、SMTP等等了

image-20241031180745499

Plane的openai就只能用来调整一下文档而已,用处不大,可以没有

如果要修改刚开始设置的ip或者localhost,可以通过修改.env文件直接完成

image-20241030150624340

APP_DOMAIN=plane.xxx.com
APP_RELEASE=stable

WEB_REPLICAS=1
SPACE_REPLICAS=1
ADMIN_REPLICAS=1
API_REPLICAS=1

直接这样修改就可以在整体起作用了,重启docker即可

问题

切分页卡顿

image-20241030152140278

不知道为什么,在内部页面或者Tab分页的时候,感觉加载速度很慢,总是会卡个一两秒才能切换过来,如果只是一个分页内工作,倒是没这种感觉。这还是没什么数据的情况下,如果数据多了,不知道会不会更慢。

切页面的同时,也监测了一下cpu使用,发现会突然上升到50%左右占用,有点奇怪

image-20241030142155469

而且主要还都是postgres使用的cpu

  • 后续发现是磁盘占满了,开的是小鸡,磁盘给少了

修改磁盘以后,继续测试发现还是不行,来回切这个地方,就是会爆数据库

企业微信截图_17302726879558

本地的免费版体验,甚至不如云端的版本,本地这里切换这个分页大概要3-5秒,云端1-2秒左右就完成了

都是没什么数据量的情况,还需要进一步优化docker内的配置

目前我提的这个问题切换到稳定版,是没有的,只有preview版本会有

  • preview切稳定版,最好删除所有历史数据,否则数据库等配置还是老的,依然卡的要死

ISSUE卡顿

image-20241030141819113

同时还有一个问题,issue首次加载很卡很慢,很多人反馈了,但是还没有修

https://github.com/makeplane/plane/issues/5115

For anyone not having checked out the Discord discussion, you definitely should. There has been a great suggestion for a temporary fix from @icorbie on Discord that improves performance greatly.

A brief outline of what to do:

  1. Connect to the Plane Postgres Database using the CLI or a SQL Client
  2. Turn off the Postgres JIT option by running alter system set jit = 0;
  3. Apply the configuration change by running select pg_reload_conf();

目前看到的改法就是通过命令行或者SQL客户端连接到Postgres上,然后关闭jit选项,应用配置,再次测试明显改善了,加载的很快。

关联删除

Plane不支持关联删除,就是删除父任务,是不会连带删除子任务的,只是单纯的解开了父子关系而已

Intake记录无法删除

image-20241031195107433

Intake的这个记录无法删除

模块区分

Plane只有开启Pro以后才有问题类型的属性自定义

image-20241118152915708

通过这个自定义才能对问题类型进行区分,比如按照软件、硬件、结构这样区分,或者是按照很具体的东西去区分问题

对于普通版本,可以通过modules模块来区分,建立时直接在modules里建立,查看也是从这里进行查看

image-20241118153242240

变相实现了Pro版本的自定义属性功能

image-20241118153357563

也可以通过view的角度借用标签来划分不同的问题

最佳实践

敏捷管理

如果是敏捷管理,那么通过设置Cycle的周期,将每周任务细化到5天内完成的量,然后去排期即可。

但是实际用起来会发现可能不尽如人意,有很多地方有些别扭

  • 缺少长期规划,长期规划的细节很难在早期一一列出来
  • 遇到一些需要长时间的任务,单个Cycle无法完成,跨Cycle任务很难排期,影响到下一个Cycle,如果此时将任务再次分为二期、三期、四期等也很难追踪这个事情的整体跨度
  • 缺少周期点数限制

非敏捷管理

如果不使用敏捷管理,而是适当的修改管理方式,来适配工作情况。

通过长期规划,设计出来各个大项任务。

周期不再以固定时间为标准,而是以事项为标准,比如完成某一个阶段的工作时间或者某一个大项任务的时间,以此作为追溯的整体周期

  • Backlog作为规划任务、但是还没提上日程的任务
  • Todo作为已经加入周期,但是还没做的任务

这样就可以通过过滤Todo以上的状态,进行当期(Cycle)的进行情况来追踪

同时可以多周期,有些比较长期不好分解的任务,加入到长期问题的周期中去,与主要事项隔离开来

  • 缺点是无法同时开始多Cycle,长周期只能手动检查

Plane商业化进程

Plane的One版本,799刀,不是很贵,一次性买断,其实是比后面几个版本要便宜一些的

Plane官网对不同版本列了很多Features,但是实际上有些特性在社区版或者免费版中已经实现了,但是web还没有修改。

同时web版本中很多特性根本没实现,Pro版本中完全无法使用。

Plane的Business和Enterprise版本,都是没有上线的,所以实际要买也买不到。目前这两个版本实际体现出来的差异性不是很大,很多功能都可以变通的通过其他方式实现

Summary

image-20241030182446732

总体而言,将Plane中的各个功能本地化或者异化成敏捷的模式,还是可以用的

Plane整体搭建简单,支持全面,在不影响其他工作流的情况下,可以无缝接入进来,当前美中不足的地方就是不支持中文,但是看官方即将更新了,后续应该可以扩展给更多人使用。