故事是这样的,有一个服务打包成docker镜像部署在我的NAS上。
毕竟是自己写的东西,修修改改一天十好几次也不意外。麻烦的就是不得不重复docker pull……
有人说:「你怎么不让CI自动触发啊?」
我构建镜像用的是GitHub Actions,按理说自动触发的方式很多。
但问题就出在,NAS没公网。
这样的话,暴露ssh或者API都不好操作。
先别告诉我用watchtower。
于是,我想到了反向Server酱。是说,用微信发一个消息,NAS定时拉取,有消息就pull一下。
有请「信达」
这就是反向Server酱。
先在控制台创建一个Agent。
在NAS上安装Agent。
sudo sh -c "$(curl -sSL https://raw.githubusercontent.com/zhshch2002/sender-agent/master/install.sh)"
然后设置docker pull的触发指令。
sudo nano /etc/sender/agent/config.yaml
name: # 创建Agent时写的名字
secretkey: # 信达网页控制台给的sk
signalings:
pull:
cmd: docker-compose pull && docker-compose up -d
dir: /home/ubuntu/sender
重启信达Agent服务。
sudo systemctl restart sender
一分钟后在网页上Agent就是up的状态了。
赶紧试试……
在公众号发送Agent名称+空格+pull,docker pull就被执行了。网页控制台上也会显示输出日志。
这就完了吗?
当然不行。我期望的是执行完构建后自动触发Agent拉取。
给GitHub Actions加一个workflow。
Depoly:
needs:
- Build
runs-on: ubuntu-latest
steps:
- name: Call Sender
uses: fjogeleit/http-request-action@master
with:
url: 'https://sender.xzhsh.ch/api/v1/signaling?secretkey=${{ secrets.SENDER_SK }}&agent=s&signaling=pull'
method: 'POST'
大功告成。
Actions替代了发微信消息的工作,每次构建结束,一个消息就被推送到信达,等待Agent获取。
refs
文档: https://sender.xzhsh.ch/docs
Agent GitHub: https://github.com/zhshch2002/sender-agent
折腾
就是说,仅仅只是为了更新docker不至于这么折腾。就像一开始说watchtower就能解决问题。
但是信达的目的不止在此。
远程重启服务、触发备份、缓存清理等等,Agent本身就有很多能开发的地方。
更别说本身信达也开放API,把这个功能集成到其他应用里能实现更多功能。
网友评论