禅道安装与二次开发

原创
2021/10/12 14:07
阅读数 1.4K

安装

禅道说是国产第一的项目管理软件,以前一直在用,都是销售发来的 zip 安装包。
今天从 gitee 克隆了源码,想安装,发现和常用的开源软件差好多

  1. 代码基本上都是王春生公司自己人的提交,在 gitee 或者 github 上,看不到互联网用户的 merge request,看不到开源的贡献
  2. 拿到源码后,根本没发安装,
    1. /README 没说,
    2. 官方文档 这里。。。“进入安装流程界面”。。。根本就进不去

摸索了以后,确实是需要编译的,原来是有文档的,在里面: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

安装的过程,也数度中断,体验不好

  1. demo 数据导入时,主键重复出错
  2. 后端抛错,module/install/js/step2.js 中 $.get("pathinfo.php" 这个文件压根不存在,9年前的代码。
  3. 数据库安装出错后,生成了 config/db.php,再打开 install.php, index.php 页面都是空白
  4. 文档说下载 yui,国内很多人压根打不开 github,写文档的人没试过吗?尽量面向小白用户
  5. 后端 502 错误等
  6. 要手动创建目录 tmp 、www/data 和设置权限:chmod o=rwx -R tmp,页面提示的命令,在 macOS 下不认得参数“-R”
  7. 打开后,浏览器控制台也出现错误:kanbanList is not defined
    代码在这里 module/product/js/kanban.js,sunhao 五个月前提交的 $.each(kanbanList,一看就没有这个变量,不测试吗?
  8. 官方文档好多次强调流程、测试框架,估计禅道本身也没有自动化的 devops 
  9. gitlab 居然只支持管理员配置,并且一定要 v4 版本,我换成 v3,接口名字改了一下,也可以
    /api/v3/projects?private_token=
    /api/v3/user?private_token=
  10. 再说回禅道 API,完全没有 rest 文档,接口定义是自己的一套,要知道禅道都是公司内部在用,大都是内网才能访问,返回结果还加密了,没必要,直接 json 不香吗?
    官方的“本篇将介绍如何在PHP编程语言中集成与使用此SDK,只需要简单的进行配置和引用便可使用。”其他语言怎么办?
    我看了文档,比如登录操作:
    先请求 GET 接口:index.php?m=api&f=getSessionID
    返回结果,json_decode,取得 tokenAuth:sessionName=sessionID
    再请求 POST 接口:?m=user&f=login&t=json。。。好烦
  11. 。。。

二次开发

返回的数据是做了两次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)

 

再续

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部