一个文档平台相关的技术
组成
外部用户:查看文档
内部用户:编写、管理文档
开发:管理平台建设、用户文档页展示、文档到页面的发布
管理平台建设
- 权限管理
- 文档内容编写
- 评审、合入流程
用户文档展示
- markdown文档 -> 特定渲染的web页面
- 用户勾选内容进行反馈、文档评分等
- 页面header,切换不同文档的导航,页面锚点导航等
发布工具
- 内部用户在管理平台调用发布
- 后端根据用户操作生成发布时所需要的信息,掉起发布任务
- 掉起drone流水线执行操作:在docker镜像中运行编译命令
发布
1、内部用户编写合入文档后,在管理平台点击发布,调用后端接口,生成发布所需要的配置json保存在CI_CONF_URL
文件中
2、同时触发drone流水线,拉取编译需要的代码,结合配置json执行编译
3、编译结束后执行webhook回调,通知到管理平台更新发布状态,成功or失败。
.drone.yml配置
kind: pipeline
name: build
clone:
disable: true
steps:
- name: clone
image: alpine/git:1.0.7
network_mode: drone-runner
commands:
- git clone $DRONE_GIT_HTTP_URL
- git checkout $DRONE_COMMIT
- name: build
image: node-git-python2:12-alpine-bash
network_mode: drone-runner
environment:
http_proxy: http://x.x.x.x:80
no_proxy: xxx.baidu.com, xxx.baidu.com
commands:
- echo "http_proxy=$http_proxy"; echo "no_proxy=$no_proxy"; echo "CI_CONF_URL=$CI_CONF_URL"
- export CI_CONF_URL=$CI_CONF_URL && sh scripts/build.sh
---
kind: pipeline
name: after
clone:
disabled: true
depends_on
- build
trigger:
status:
- success
- failure
steps:
- name: webhook
image: plugins/webhoook:1.1.0
network_mode: drone_runner
environment:
http_proxy: https://x.x.x.x:80
no_proxy: xxx.baidu.com, xxx.baidu.com
settings:
urls:
- http://${doc_host}/api/deploy/drone_hook
- http://${doc_sandbox_host}/api/deploy/drone_hook
headers:
- Authorization=${auth_token}
templates:
{
"buildNumber": "{{repo.owner}}/{{repo.name}}/{{build.number}}@drone",
"status": "{{build.status}}"
}
when:
status:
- success
- failure
发布脚本build.sh
set -e
echo "node: ${node -v}"
echo "npm: v${npm -v}"
function load_conf() {
local conf_url=$1
local conf=''
for i in $(seq 1 3)
do
conf=${curl -s $conf_url}
if [ -n "$conf" ]; then
break
fi
done
echo $conf
}
ci_info=${load_conf $CI_CONF_URL}
if [ -z "$ci_info"]; then
echo "加载配置任务失败"
exit 1
fi
builder_number=${python -c "import json; result=json.loads('${ci_info}'); print result['builder']['name']"}
builder_version=${python -c "import json; result=json.loads('${ci_info}'); print result['builder']['version']"}
echo $ci_info > ci.json
echo $builder_name@builder_version
npm i $builder_name@builder_version
node ./node_modules/.bin/wj-build -c ci.json wj-build-task | ./node_modules/.bin/bunyan
build_exit_code="${PIPESTATUS[0]}"
echo "exit_code=${build_exit_code}"
exit build_exit_code
命令行工具
import program from 'commander'
program
.version(1.0.0.0)
.opotion('-c, --config [value]', ' specify path of the config file')
.action(async function (cmd, env) {
// do the compile work
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构