如何建立乙個GitLab Web Hooks

2021-09-25 20:33:36 字數 2581 閱讀 3839

git 能在特定的重要動作發生時觸發自定義的指令碼。

這些指令碼都被儲存在 git 目錄下的 hooks 子目錄中(.git/hooks)。當 git init 初始化乙個倉庫時,git 缺省會在這個目錄中放置一些示例指令碼。這些指令碼一般都是 shell 指令碼。不過自定義的可執行指令碼可以使用你喜歡的指令碼語言,如 ruby、python 等。

這些示例的名字都是以 .sample 結尾,如果需要啟用它們,首先要移除這個字尾:

cd .git/hooks

ls

commit-msg.sample

post-update.sample

pre-commit.sample

pre-push.sample

pre-rebase.sample

prepare-commit-msg.sample

update.sample

鉤子按功能分來兩類:客戶端和和伺服器端的。

客戶端鉤子由諸如提交(commit)和合併(merge)這樣的操作所呼叫,而伺服器端鉤子作用於諸如接收被推送(push)的提交這樣的聯網操作。

顧名思義,web hooks 的含義是將本地指令碼介面化。gitlab 能在特定的重要動作發生時呼叫自定義的介面。介面的內部邏輯實現自動化部署或自動化測試的**。

以 nginx + supervisor 部署 flask 應用作為我們的介面服務。

建立 python 檔案:

vi web_hooks_flask.py
寫入以下**:

#! /usr/bin/env python

# -*- coding: utf-8 -*-

from flask import flask, request

import json

import os

def index():

path = '/home/www/test/' # 專案目錄

return _hooks(path, request.data)

def _hooks(path, data):

post_data = json.loads(data)

ref = post_data['ref']

branch_name = ref.split('/')[-1]

status = os.system("cd %s && git checkout %s && git pull --rebase" % (path, branch_name,))

if status == 0:

return 'success'

else:

return 'error'

if __name__ == '__main__':

儲存後,啟動服務:

python web_hooks_flask.py
啟動成功:

* running on  (press ctrl+c to quit)

* restarting with stat

* debugger is active!

* debugger pin code: 569-323-263

supervisor 是乙個程序管理程式,能將乙個普通的命令列程序變為守護程序,並監控程序狀態,異常退出時能自動重啟。

在 supervisor 的配置檔案中追加:

[program:web_hooks_flask]

command=python /path/web_hooks_flask.py # path 改為具體部署的絕對路徑

redirect_stderr=true

stdout_logfile=/path/web_hooks_flask.log # path 改為具體部署的絕對路徑

更新配置檔案:

supervisorctl update
啟動程序:

supervisorctl start web_hooks_flask
檢視程序:

supervisorctl
web_hooks_flask   running   pid 29526, uptime 2 days, 20:58:51
向 nginx 配置檔案中追加配置:

server 

}

重啟 nginx 服務。

在上圖的url中,填入hooks.test.com儲存即可。

如何建立乙個模組 如何起步建立乙個童裝品牌?

自從有了童裝創業的想法,腦海中蹦出無數想法。從0到1建立乙個品牌,首先要問清楚自身,理想中這將是乙個怎樣的品牌?展示出來是怎樣的形象?希望消費者對品牌產生怎樣的感受?最終實現品牌的什麼目標?這些問題,並不是一開始就能確定答案,也不會是一成不變。我們應該從建立品牌,到運營 維護品牌,都對這些問題保持思...

如何建立乙個dblink

建立乙個dblink的詳細步驟 1 啟動伺服器資料庫 2 建立乙個本地net服務名 oracle oracle92 configuration and migration tools net configuration assistant 3 登入sqlplus 用本地帳戶登入 4 建立dblink...

如何建立乙個GitLab Web Hooks

git 能在特定的重要動作發生時觸發自定義的指令碼。這些指令碼都被儲存在 git 目錄下的 hooks 子目錄中 git hooks 當 git init 初始化乙個倉庫時,git 缺省會在這個目錄中放置一些示例指令碼。這些指令碼一般都是 shell 指令碼。不過自定義的可執行指令碼可以使用你喜歡的...