7
回答
使用git@osc中的HOOK钩子如何做自动部署?
终于搞明白,存储TCO原来是这样算的>>>   

@Zoker 你好,想跟你请教个问题:

使用git@osc中的HOOK钩子如何做自动部署?

服务器环境RHEL5.5。

看到HOOK的简介,会自动callback一个http地址,我的理解是在这个地址里去拉取(pull)程序并重启应用应用服务器。

首先,不知道我理解的是否正确。其次,如果是正确的,我应该如何做呢?

GIT@osc钩子功能(callback),是帮助用户push了代码后,自动callback回调一个您设定的http地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。

举报
欲风
发帖于2年前 7回/2K+阅
共有7个答案 最后回答: 2年前

是的,比如接收到一个请求,在这个请求的action里面就可以逻辑判断然后执行脚本,脚本的话根据你的需求而定,比如更新代码,然后重启服务:

auto_reload.sh

#!/bin/bash

cd /path/to/your/app
git pull origin master

/your/script/to/reload/application

不是的,钩子的地址是你推送了代码之后,程序会对这个地址进行post请求,你在你服务器上的程序接收到这个请求之后,获取相关信息做处理,然后执行相应的脚本实现自动化部署。

格式是这样的

hook={
    "password": "123", 
    "push_data": {
        "before": "cbd3884034f13d6f4e7bc85035df4b52f0874ee1", 
        "after": "db472e2a504880899cd924d7212c81560cd0e68f", 
        "ref": "refs/heads/master", 
        "user_id": 62561, 
        "user_name": "Zoker", 
        "repository": {
            "name": "getingblog", 
            "url": "git@git.oschina.net:silentboy/getingblog.git", 
            "description": "", 
            "homepage": "http://git.oschina.net/silentboy/getingblog"
        }, 
        "commits": [
            {
                "id": "db472e2a504880899cd924d7212c81560cd0e68f", 
                "message": "sdfasef", 
                "timestamp": "2015-07-03T19:14:03+08:00", 
                "url": "http://git.oschina.net/silentboy/getingblog/commit/db472e2a504880899cd924d7212c81560cd0e68f", 
                "author": {
                    "name": "silentboy", 
                    "email": "kaixuanguiqu@gmail.com"
                }
            }
        ], 
        "total_commits_count": 1
    }
}



感谢回答!

我的疑问:

你在你服务器上的程序接收到这个请求
1. 我需要在服务器上开放一个REST接口,是么?

之后,获取相关信息做处理,然后执行相应的脚本实现自动化部署。
2. 是在REST接口里“执行相应的脚本”么?是Linux脚本么?能给一个示例的脚本么?

顶部