把任SHELL意指令改成API,还能微信调用?这一定是魔法……

2021-04-21  本文已影响0人  zhshch

故事是这样的,有一个服务打包成docker镜像部署在我的NAS上。

毕竟是自己写的东西,修修改改一天十好几次也不意外。麻烦的就是不得不重复docker pull……

有人说:「你怎么不让CI自动触发啊?」

我构建镜像用的是GitHub Actions,按理说自动触发的方式很多。

但问题就出在,NAS没公网。

这样的话,暴露ssh或者API都不好操作。

先别告诉我用watchtower。

于是,我想到了反向Server酱。是说,用微信发一个消息,NAS定时拉取,有消息就pull一下。

有请「信达」

这就是反向Server酱。

信达 - https://sender.xzhsh.ch/

先在控制台创建一个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/

文档: https://sender.xzhsh.ch/docs

Agent GitHub: https://github.com/zhshch2002/sender-agent

折腾

就是说,仅仅只是为了更新docker不至于这么折腾。就像一开始说watchtower就能解决问题。

但是信达的目的不止在此。

远程重启服务、触发备份、缓存清理等等,Agent本身就有很多能开发的地方。

更别说本身信达也开放API,把这个功能集成到其他应用里能实现更多功能。

上一篇下一篇

猜你喜欢

热点阅读