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

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

作者: zhshch | 来源:发表于2021-04-21 17:13 被阅读0次

    故事是这样的,有一个服务打包成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,把这个功能集成到其他应用里能实现更多功能。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/fwyzlltx.html