apidoc接口文档的自动更新与发布

文章目录

  • 一、概述
  • 二、环境准备
  • 三、接口文档生成
    • 1. 下载源码
    • 2. 初始化
    • 3.执行
  • 四、文档发布
  • 五,配置定时运行
  • 六,docker运行
  • 七,不足与优化分析

一、概述

最近忙于某开源项目的接口文档整理,采用了apidoc来整理生成接口文档。
apidoc是一个可以将源代码中的注释直接生成api接口文档的工具,对现有代码无侵入。他可以根据代码注释生成web api文档,支持大部分主流语言java javascript php coffeescript erlang perl python ruby go…,相对而言,web接口的注释维护起来更加方便,不需要额外再维护一份文档。

下面我们以 docker-demo 项目为例来展示如何实现接口文档的自动更新与发布。
效果如下:
http://1.94.177.4
在这里插入图片描述

二、环境准备

云主机,centos7系统,安装组件:git、nodejs、npm、apidoc、nginx

组件作用
git源码下载
nodejs、npmapidoc环境
apidoc接口文档工具软件
nginx接口文档发布服务器

安装git、nodejs、npm、apidoc

#安装git
yum install -y git#安装apidoc之前要先安装node.js、npm
yum install -y nodejs
yum install -y npm#安装apidoc
npm install -g apidoc#验证
git --version
apidoc -v
apidoc -h

配置nginx repo

vim /etc/yum.repos.d/nginx.repo[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装nginx

#查看yum的nginx信息
yum info nginx#执行命令安装
yum -y install nginx#查看安装目录
whereis nginx#设为开机启动
sudo systemctl enable nginx.service启动/停止/重启/查看状态  nginx
sudo systemctl start   nginx.service
sudo systemctl stop    nginx.service
sudo systemctl restart nginx.service
sudo systemctl status  nginx.service

三、接口文档生成

1. 下载源码

使用git下载

mkdir /work
cd /work
git clone https://gitee.com/00fly/docker-demo.git

2. 初始化

cd /work/docker-demo
sh init.sh

执行后,会拷贝all-in-one.sh到上层目录

3.执行

cd /work/
sh all-in-one.sh

all-in-one.sh 实现了git更新与apidoc文档生成

#!/bin/sh
rm -rf docfor dir in $(ls -d */)
doif [ -d "$dir"/.git ]; thenecho "$dir" && cd "$dir" && git pull && cd ..fi
doneecho "Will Run: apidoc -i  docker-demo/src -o doc"
apidoc -i  docker-demo/src -o doc

在这里插入图片描述

四、文档发布

通过nginx发布

whereis nginx
cd /etc/nginx/conf.d
vi default.conf

修改内容为下图标红内容
在这里插入图片描述

重启nginx

nginx -t
nginx -s reload

五,配置定时运行

#查看
crontab -l#编辑
crontab -e

输入

* * * * * /bin/sh /work/all-in-one-cron.sh

crontab 实现了每分钟生成接口文档,具体可下拉文档到最后,看时间戳内容,e.g:
构建于 apidoc 1.2.0 - Sat Feb 24 2024 17:26:01 GMT+0800 (China Standard Time)

crontab中定义的shell必须使用全路径

all-in-one-cron.sh

#!/bin/sh
#download source by git clone
rm -rf /work/docker-demo && cd /work && /usr/bin/git clone https://gitee.com/00fly/docker-demo.git#move sh to parent directory
cd /work/docker-demo && sh init.sh#build apidoc
/usr/local/bin/apidoc -i /work/docker-demo/src -o /work/doc
touch /work/doc

六,docker运行

docker运行无需配置nodejs环境,apidoc运行环境在容器内,较方便

请参考 https://gitee.com/00fly/effict-side/tree/master/apidoc-image

七,不足与优化分析

使用crontab来定时更新接口文档,大部分是无效工作,因为接口文档的源文件并未变化。
可以考虑使用jenkins来集成。
大致流程为:

配置项目git源码地址
周期性检查源码是否更新
调用apidoc脚本生成接口文档
接口文档打包上传到nginx服务器

具体流程就不再详细阐述了,留着各位大佬自己研究实现!


有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习系列59:文字识别

1. 简单文本: 使用google加的tesseract,效果不错。 首先安装tesseract,在mac直接brew install即可。 python调用代码: import pytesseract from PIL import Image img Image.open(1.png) pytesseract.image_to_string(img, lan…

MES管理系统生产过程控制的核心要素

MES(制造执行系统)是为优化制造业生产过程和管理而设计的软件系统,其核心要素包括: 工单管理:工单管理是MES系统最基本的功能之一,它可以跟踪和管理各种类型的工单,如生产工单、维修工单和质量…

解释 C++ 中的虚拟继承(Virtual Inheritance)

解释 C 中的虚拟继承(Virtual Inheritance) 在 C 中,虚拟继承(Virtual Inheritance)是一种特殊的继承方式,用于解决多继承带来的菱形继承(Diamond Inheritance)问题。虚拟继承主要通…

Spring篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、spring 支持集中 bean scope?二、spring bean 容器的生命周期是什么样的?三、什么是 spring 的内部 bean?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

Java EE改名Jakarta EE,jakarta对程序开发的影响

一、前言 很多Java程序员在使用新版本的Spring6或者springboot3版本的时候,发现了一些叫jakarta的包。我在阅读开源工作流引擎camunda源代码的时候,也发展了大量jakarta的工程包。 比如:camunda的webapps编译工程就提供了2种方式javax和jaka…

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的多特征分类预测

SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测 目录 SCI一区 | Matlab实现ST-CNN-MATT基于S变换时频图和卷积网络融合多头自注意力机制的故障多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍…

论文阅读:Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases

前言 最近看到一篇ICRA2024上的新文章,是关于多传感器融合SLAM的,好像使用了最近几年文章中较火的轮式里程计。感觉这篇文章成果不错,代码和数据集都是开源的,今天仔细读并且翻译一下,理解创新点、感悟研究方向、指导…

【杂谈】还能这么骗Github开源者?

起因 StarkNet给Github前5000的账户空投了一波STRK代币,一般有资格获得空投的开发者,大概能获得 110个 STRK 代币,按目前价格计算大概 1500人民币左右。 什么是有资格的开发者呢?按 Starknet要求,如果你给在 GitHub上排名前 5000…

【精选】网络安全大厂面试题 2.0

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

基于SSM的废品买卖回收管理系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的废品买卖回收管理系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spri…

Spring Boot+ShardingSphere+MySQL实现分库分表:高效数据库扩展

在构建现代Web应用程序时,数据库的性能和可扩展性是至关重要的。当应用程序的数据量逐渐增加时,传统的单一数据库可能无法满足需求。分库分表是一种有效的数据库水平扩展方法,可以显著提高数据库性能并实现负载均衡。 什么是分库分表 分库分…

Vue+SpringBoot打造开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

数据库-数据库设计-社交关系

佛 每有一个新方案,就要考虑有什么影响增删改查可扩展性 MySQL 根据ER图设计表 create table follow(id bigint unsigned not null auto_increment comment 主键,gmt_create datetime null default current_timestamp,gmt_modified null default current_timest…

hive表中导入数据 多种方法详细说明

文章中对hive表中导入数据 方法目录 方式一:通过load方式加载数据 方式二:直接向分区表中插入数据 方式三:查询语句中创建表并加载数据(as select) 方式四:创建表时通过location指定加载数据路径 1. 创建表…

真值表,主析取范式,主合取范式,栈,哈希表

利用栈对表达式求值 根据运算符的各运算符的优先顺序,确定入栈操作 if(compare(s2.top(),s[i])-1)栈内的优先级小,栈外的运算符入栈if(compare(s2.top(),s[i])0)栈内的优先级与栈外的优先级相同,栈内运算符出栈if(compare(s2.top(),s[i]1)栈…

人工智能机器视觉、大数据与向量数据库的交融之路

文章目录 人工智能机器视觉、大数据与向量数据库的交融之路引言计算机视觉发展现状与趋势技术演进历程回顾当前的主要发展方向 大数据与计算机视觉的相互关系数据驱动下的CV技术进步向量数据库在图像检索与分析中的作用 具体应用案例剖析如何利用大数据和向量数据库解决CV难题代…

设计模式-创建型模式-建造者模式

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。 建造者模式一步一步地创建一个复杂的对象,它允许用户只通过指定复杂对象…

LeetCode 1393.股票的资本损益

Stocks 表: ---------------------- | Column Name | Type | ---------------------- | stock_name | varchar | | operation | enum | | operation_day | int | | price | int | ---------------------- (stock_name, day) 是这张表的主键(具有唯一值的列的组合) …

windows 中, bash: conda: command not found(已解决)

git bash 中运行conda命令,出现这种错误,原因是你没有在git bash中 配置conda,导致git bash无法找到conda 那就配置一下,找到你的conda的安装位置下的bash.sh文件,一般在安装位置(我的安装在C盘的自定义路径…

RocketMQ生产环境常见问题分析与总结

RocketMQ生产环境常见问题分析与总结 如何保证消息不丢失 消息丢失场景 对于跨网络的节点可能会丢消息,因为MQ存盘都会先写入OS的PageCache中,然后再让OS进行异步刷盘,如果缓存中的数据未及时写入硬盘就会导致消息丢失 生产端到Broker端Brok…