ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Huly 升级平台版本后如何用 admin tool 执行 upgrade-workspace 迁移工作区

Huly 升级平台版本后如何用 admin tool 执行 upgrade-workspace 迁移工作区 Huly 升级平台版本后如何用 admin tool 执行 upgrade-workspace 迁移工作区【免费下载链接】platformHuly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)项目地址: https://gitcode.com/GitHub_Trending/platform80/platform自托管的 Huly 升级到新版本后已有工作区里的数据仍停留在旧模型版本上需要用仓库中的 admin toolhcengineering/tool包对应 dev/tool 目录执行upgrade-workspace命令把工作区迁移到新版本。这篇文章基于仓库中的脚本与命令定义说明版本升级后如何完成这次迁移以及如何判断迁移成功。upgrade-workspace 命令与参数命令定义在 dev/tool/src/index.tsupgrade-workspace namename工作区名必填工具会在账号数据库中按名字查找工作区。-f, --forceForce update默认true。-i, --indexesForce indexes rebuild默认false。实际的迁移逻辑在同文件的doUpgrade第 380–432 行从账号数据库读取工作区及其状态信息用prepareTools()返回的新模型版本version调用upgradeWorkspace执行迁移然后依次完成三件事通过updateWorkspaceInfo把工作区信息更新为event: upgrade-done、progress: 100并写入当前version向 Workspace 队列主题发送workspaceEvents.upgraded()事件打印升级指标并输出upgrade-workspace done。如果账号数据库中找不到该名字的工作区命令会抛出workspace name not found错误。前提先让新版平台跑起来迁移前平台本身需要先升级到新版本。dev docker compose 环境按 dev/readme.md 操作rush build rush bundle rush docker:build docker compose up -d --force-recreate工具迁移到的目标版本由MODEL_VERSION决定dev/tool/package.json 的bundle脚本通过--define:MODEL_VERSION在构建期把它编译进 bundle取值来自common/scripts/show_version.js即当前 checkout 的版本号。这意味着仓库路径下必须用新版代码重新 bundle 后再执行迁移docker 镜像路径下则要对应用对应版本的hardcoreeng/tool镜像。主路径在 dev/tool 目录执行 rushx upgradedev/tool/package.json 中定义了升级入口upgrade: rushx run-local upgrade-workspace -- $1, upgrade-mongo: rushx run-local-mongo upgrade-workspace -- $1即rushx upgrade 工作区名会先执行run-local内部先rush bundle --to hcengineering/tool构建工具 bundle注入环境变量后以node --expose-gc --max-old-space-size18000 ./bundle/bundle.js运行upgrade-workspace。run-local注入的环境变量指向 huly.local 的 dev docker compose 环境SERVER_SECRETsecret FULLTEXT_URLhttp://localhost:4702 ACCOUNTS_URLhttp://localhost:3000 TRANSACTOR_URLws://localhost:3332 STORAGE_CONFIGdatalake|http://huly.local:4030 HULYLAKE_URLhttp://huly.local:8096 ACCOUNT_DB_URLpostgresql://roothuly.local:26257/defaultdb?sslmodedisable DB_URLpostgresql://roothuly.local:26257/defaultdb?sslmodedisable TELEGRAM_DATABASEtelegram-service REKONI_URLhttp://localhost:4004 REGION_INFOcockroach|CockroachDB MODEL_VERSION$(node ../../common/scripts/show_version.js) GIT_REVISION$(git describe --all --long) QUEUE_CONFIGlocalhost:19092实际执行cd dev/tool rushx upgrade 工作区名upgrade-mongo与它等价区别只是环境变量指向本地 mongo 开发环境mongodb://localhost:27017、MINIO_ENDPOINTlocalhost。如果平台部署不在 huly.local compose 环境不要直接沿用run-local的地址需要按实际部署自己组装环境变量。仓库里的 tests/tool-local.sh 是一个现成示例可把最后一段作为模板参考mongo/cockroach 测试环境export MODEL_VERSION$(node ../common/scripts/show_version.js) export STORAGE_CONFIGdatalake|http://localhost:4030 export MONGO_URLmongodb://localhost:27017 export DB_URLpostgresql://rootlocalhost:26257/defaultdb?sslmodedisable export ACCOUNT_DB_URLpostgresql://rootlocalhost:26257/defaultdb?sslmodedisable export ACCOUNTS_URLhttp://localhost:3000 export TRANSACTOR_URLws://huly.local:3333,ws://huly.local:3332;;cockroach export ELASTIC_URLhttp://localhost:9200 export SERVER_SECRETsecret export QUEUE_CONFIGlocalhost:19092 node ../dev/tool/bundle/bundle.js upgrade-workspace 工作区名Postgres 测试环境对应 tests/tool-pg.sh数据库端口 5433、Elastic 端口 9201用法相同。可选路径直接用 docker 运行 hardcoreeng/tool 镜像镜像部署时仓库提供了一行脚本 dev/upgrade.sh原文如下docker run -ti -e SERVER_SECRETsecret \ -e MONGO_URLmongodb://127.0.0.1:27017 \ -e MINIO_ENDPOINTminio \ -e MINIO_ACCESS_KEYminioadmin \ -e MINIO_SECRET_KEYminioadmin \ --rm --network host \ hardcoreeng/tool node ./bundle upgrade执行前需要把SERVER_SECRET、MONGO_URL、MINIO_*等环境变量改成与自己部署一致。注意--network host表示容器共享宿主机网络因此mongodb://127.0.0.1:27017这类地址要求 mongo 在宿主机上可达--rm会在退出后删除容器。可选路径恢复备份后顺带升级工具的backup-restore命令带--upgrade选项定义见 index.ts 第 891 行触发后会调用同一个doUpgrade且 force 与 indexes 都置为true。测试恢复脚本中的用法tests/restore-cockroach.sh./tool-cockroach.sh backup-restore ./sanity-ws sanity-ws --upgrade这条路径服务于先恢复旧备份、再升到新版本的场景如果只是版本升级后的常规迁移用upgrade-workspace主路径即可。结果验证依据doUpgrade的实现判断迁移是否完成控制台打印升级指标metricsToString(..., upgrade, 60)的输出最后一行是upgrade-workspace done账号数据库中该工作区的信息被更新event: upgrade-done、progress: 100version字段写入当前版本号Workspace 队列主题上发出workspaceEvents.upgraded()事件。如果控制台报workspace name not found说明账号数据库里不存在这个名字的工作区先核对传给命令的工作区名是否正确再检查ACCOUNT_DB_URL/DB_URL是否指向了正确的账号数据库。【免费下载链接】platformHuly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion)项目地址: https://gitcode.com/GitHub_Trending/platform80/platform创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表