安装
禅道说是国产第一的项目管理软件,以前一直在用,都是销售发来的 zip 安装包。
今天从 gitee 克隆了源码,想安装,发现和常用的开源软件差好多
- 代码基本上都是王春生公司自己人的提交,在 gitee 或者 github 上,看不到互联网用户的 merge request,看不到开源的贡献
- 拿到源码后,根本没发安装,
- /README 没说,
- 官方文档 这里。。。“进入安装流程界面”。。。根本就进不去
摸索了以后,确实是需要编译的,原来是有文档的,在里面:doc/INSTALL
大致是下面的(我写了 shell,不知道怎么提交 MR)
#!/bin/bash
set -x
set -e
CRTDIR=$(cd "$(dirname "$0")";pwd)
echo "current folder: $CRTDIR"
YUI_HOME=~/bin/yuicompressor/build
YUI_JAR=$YUI_HOME/yuicompressor.jar
if [ ! -f "$YUI_JAR" ]; then
mkdir -p $YUI_HOME
# https://mvnrepository.com/artifact/com.yahoo.platform.yui/yuicompressor
wget -O $YUI_JAR https://repo1.maven.org/maven2/com/yahoo/platform/yui/yuicompressor/2.4.8/yuicompressor-2.4.8.jar
fi
# 删除已有的安装文件
rm -rf zentaopms zentaoxx www/install.php tmp www/data config/db.php config/my.php
# git reset --hard HEAD
cp www/install.php.tmp www/install.php
mkdir -p ./tmp
chmod o=rwx ./tmp
chmod -R 777 ./tmp
mkdir -p ./www/data
chmod o=rwx ./www/data
chmod -R 777 ./www/data
# make
cd tools
php minifyfront.php
安装的过程,也数度中断,体验不好
- demo 数据导入时,主键重复出错
- 后端抛错,module/install/js/step2.js 中 $.get("pathinfo.php" 这个文件压根不存在,9年前的代码。
- 数据库安装出错后,生成了 config/db.php,再打开 install.php, index.php 页面都是空白
- 文档说下载 yui,国内很多人压根打不开 github,写文档的人没试过吗?尽量面向小白用户
- 后端 502 错误等
- 要手动创建目录 tmp 、www/data 和设置权限:chmod o=rwx -R tmp,页面提示的命令,在 macOS 下不认得参数“-R”
- 打开后,浏览器控制台也出现错误:kanbanList is not defined
代码在这里 module/product/js/kanban.js,sunhao 五个月前提交的 $.each(kanbanList,一看就没有这个变量,不测试吗? - 官方文档好多次强调流程、测试框架,估计禅道本身也没有自动化的 devops
- gitlab 居然只支持管理员配置,并且一定要 v4 版本,我换成 v3,接口名字改了一下,也可以
/api/v3/projects?private_token=
/api/v3/user?private_token= - 再说回禅道 API,完全没有 rest 文档,接口定义是自己的一套,要知道禅道都是公司内部在用,大都是内网才能访问,返回结果还加密了,没必要,直接 json 不香吗?
官方的“本篇将介绍如何在PHP编程语言中集成与使用此SDK,只需要简单的进行配置和引用便可使用。”其他语言怎么办?
我看了文档,比如登录操作:
先请求 GET 接口:index.php?m=api&f=getSessionID
返回结果,json_decode,取得 tokenAuth:sessionName=sessionID
再请求 POST 接口:?m=user&f=login&t=json。。。好烦 - 。。。
二次开发
- php 有直接的 sdk:https://www.zentao.net/book/api/setting-369.html
- 非 php 可以参考:https://devel.easycorp.cn/book/extension/intro-45.html
返回的数据是做了两次json_encode,下面是代码的示例:
$result = file_get_contents('http://pms.zentao.net/project-task-8.json'); $result = json_decode($result); if($result->status == 'success' and md5($result->data) == $result->md5) { $data = json_decode($result->data); print_r($data); }
建议
内部系统不需要SEO,所以建议随后大版本开始做前后端分离,后端 提供 service 或 api,纯 json 格式的,前端提供 html 浏览器端渲染(Vue 或者 react)
再续