最近一直写接口文档,基于 swaggo 实现的文档服务。由于要跟前端配合,所以每天都要频繁更新接口文档,非常麻烦。之前是半自动化状态:
- makefile 中 scp 文档程序到服务器
- 手动登录服务器,再 makefile 执行 systemd reload 文档服务 (文档服务基于 golang gin 所以需要重启服务)
最近在看一个开源项目的 Makefile 时,发现可以使用 ssh 远程执行命令,这样就不需要手动登录服务器来操作了,甚好。
Makefile 代码
.PHONY: doc
doc:
swag init --output api_docs --tags "微信小程序,设备管理" --parseDependency --parseInternal --parseGoList=false --parseDepth=1
cd api_docs/ && go build
.PHONY: deploy_doc
deploy_doc:
make doc
scp api_docs/api_docs user@host:~/project/api_docs/api_docs2
ssh user@host 'cd ~/project && make reload_docs'
.PHONY: reload_docs
reload_docs:
sudo systemctl stop go_docs
sleep 1
cp api_docs/api_docs2 api_docs/api_docs
sudo systemctl start go_docs
sleep 1
sudo systemctl status go_docs
这样就可以通过
make deploy_doc
一行命令部署并重启服务了。
多行命令
对于再复杂一点的场景,比如判断目录是否存在,自动备份,再替换这种情况,就需要更多 shell 代码。如何写成多行呢?
记不住 shell 语法,于是跪求于 ChatGPT:
ssh 远程执行解压缩命令,并执行多行命令,是否可以写成多行
感觉我已经是 linux shell 专家了 😀
ssh user@host '
tar -zxvf /path/to/your/local/file.tar.gz -C /path/on/remote/host && \
command1 && \
command2 && \
command3
'
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式