V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
AlexaZhou
V2EX  ›  分享创造

分享一个自己轮的远程自动部署工具[ GitAgent]

  •  
  •   AlexaZhou ·
    alexazhou · 2016-07-31 17:28:44 +08:00 · 3252 次点击
    这是一个创建于 3066 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因

    最近有些自动部署的需要,简单来说就是在一台机器上控制其他多个机器更新代码。 考虑过在脚本中通过 SSH 去连接然后执行命令,或者是通过 Rsync 来进行处理,始终觉得不是很好。

    考虑到这个需求应该还是挺普遍的,所以就开发了 GitAgent 这个工具。

    欢迎大家使用,欢迎 PR 。

    传送门: https://github.com/alexazhou/GitAgent

    GitAgent

    一个允许你通过 Http 请求来操作其他机器上 Git 仓库的服务

    介绍

    GitAgent 作为一个 web 服务来运行. 接收来自 Http 请求的命令来对本地的 Git 仓库进行操作

    有了 GitAgent ,你可以对其他机器上的 Git 仓库做下面这些事情

    • 获取当前仓库的状态
    • pull 最新的代码
    • checkout 分支/版本 ...

    GitAgent 还支持:

    • 在 pull 成功之后执行指定的命令(主要是为了方便完成部署的附加工作)
    • 也允许设置密码来保护接口的安全性
    • 通过 websocket 实时回传 git pull 和命令执行过程中的日志输出 😎

    GitAgent 还做了这些事情以方便使用:

    • 提供了对应的 client 库,实现了全部的 API ,如果使用 Python 的话,直接调用即可
    • 上传至 PyPI ,一条命令即可 安装 / 运行

    ##安装

    GitAgent 已经封装成库,通过以下命令即可安装

    python3 -m pip install gitagent
    

    然后可以一键运行:

    python3 -m gitagent run
    

    Client

    GitAgent 还包含了一个 client 😈,基于 requests 库,封装了通过 http 请求操作 GitAgent 的相关代码。如果使用 python 的话,只需要通过

    from gitagent import client
    

    import 之后,就可以直接使用啦

    创建 client 对象

    agent_client = client.AgentClient( SERVER_ADDR, SERVER_PORT, passwork=None )
    

    获取仓库列表

    agent_client.repo_list()
    
    >> ['repo1','repo2','repo3']
    

    获取仓库状态

    agent_client.repo_status('repo1')
    {'untracked_files': ['a.txt', 'config.json', 'xxx.json'], 'busy': False, 'hash': '827b39799a543fee30a174d44cd0c5451776e413', 'dirty': True, 'changed_files': {'R': [], 'A': [], 'D': [], 'M': []}, 'author': 'AlexaZhou', 'branch': 'master', 'message': '\u66f4\u65b0\u6587\u6863\n'}
    

    对仓库进行操作

    agent_client.pull('repo1', branch='master', hash='abcdefg', command='cmd1', block=1)
    >>{'ret': 'success', 'err_msg': None}
    
    6 条回复    2016-11-16 16:02:55 +08:00
    Powered
        1
    Powered  
       2016-08-01 15:36:43 +08:00 via Android
    wysnylc
        2
    wysnylc  
       2016-08-01 16:44:30 +08:00
    jenkis
    angusun
        3
    angusun  
       2016-08-03 18:40:23 +08:00 via Android
    支持!!!!
    towser
        4
    towser  
       2016-08-04 13:51:37 +08:00   ❤️ 1
    README.md 中 Usage 段落有两个 step 2
    AlexaZhou
        5
    AlexaZhou  
    OP
       2016-08-05 12:39:31 +08:00
    @towser
    真是好眼力,我都没看出来。

    已经修正啦
    wujunze
        6
    wujunze  
       2016-11-16 16:02:55 +08:00
    666
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.