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

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

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

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

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

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

这样的话,暴露ssh或者API都很差操做。api

先别告诉我用watchtower。缓存

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

有请「信达」

image-20210420165638131

这就是反向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的状态了。

赶忙试试……

1618909610-5E0ETC

在公众号发送Agent名称+空格+pull,docker pull就被执行了。网页控制台上也会显示输出日志。

1618909700-gHoqze

这就完了吗?

固然不行。我指望的是执行完构建后自动触发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

官网: sender.xzhsh.ch/

文档: sender.xzhsh.ch/docs

Agent GitHub: github.com/zhshch2002/…

折腾

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

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

远程重启服务、触发备份、缓存清理等等,Agent自己就有不少能开发的地方。

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

相关文章
相关标签/搜索