故事是这样的,有一个服务打包成docker镜像部署在个人NAS上。git
毕竟是本身写的东西,修修改改一天十好几回也不意外。麻烦的就是不得不重复docker pull……github
有人说:「你怎么不让CI自动触发啊?」docker
我构建镜像用的是GitHub Actions,按理说自动触发的方式不少。shell
但问题就出在,NAS没公网。ubuntu
这样的话,暴露ssh或者API都很差操做。api
先别告诉我用watchtower。缓存
因而,我想到了反向Server酱。是说,用微信发一个消息,NAS定时拉取,有消息就pull一下。微信
这就是反向Server酱。markdown
信达 - sender.xzhsh.ch/ssh
先在控制台建立一个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获取。
官网: sender.xzhsh.ch/
Agent GitHub: github.com/zhshch2002/…
就是说,仅仅只是为了更新docker不至于这么折腾。就像一开始说watchtower就能解决问题。
可是信达的目的不止在此。
远程重启服务、触发备份、缓存清理等等,Agent自己就有不少能开发的地方。
更别说自己信达也开放API,把这个功能集成到其余应用里能实现更多功能。