You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab仓库有新commit时立即执行Python脚本

GitLab捕获push/commit事件并触发Python脚本的实现方法

你可以根据自己的使用场景选择以下两种方案:

方案1:使用GitLab CI/CD流水线(最简便,无需额外部署服务)

  • 首先在仓库根目录创建名为.gitlab-ci.yml的配置文件,GitLab会自动识别该文件加载流水线规则
  • 配置文件中指定push事件作为触发条件,配置示例如下:
stages:
  - execute_script

run_python_task:
  stage: execute_script
  # 仅在push事件发生时触发运行
  only:
    - pushes
  # 选择包含Python环境的运行镜像,可根据自己的需求更换版本
  image: python:3.11-slim
  script:
    # 若脚本有依赖的第三方库,先安装依赖
    - pip install -r requirements.txt
    # 运行你仓库内的Python脚本,替换为你自己的脚本路径
    - python ./your_script.py
  • 配置提交到仓库后,后续所有push操作都会自动触发流水线运行指定的Python脚本,事件捕获逻辑由GitLab内置实现,无需额外开发。

方案2:使用GitLab Webhook(适合需要在自有服务器上运行脚本的场景)

如果你的脚本必须运行在自己的指定服务器上,可以通过Webhook实现事件捕获:

  • 进入GitLab仓库的「设置」-「Webhooks」页面
  • 触发条件勾选Push events,可根据需求限定触发的分支范围
  • 填写你自有服务器的接收接口URL,GitLab检测到push事件时会自动向该URL发送包含完整事件信息的POST请求
  • 在自有服务器上部署一个简单的接口服务接收请求,校验通过后触发Python脚本即可,示例代码如下:
from fastapi import FastAPI, Request
import subprocess

app = FastAPI()

@app.post("/gitlab-webhook-receiver")
async def handle_gitlab_event(request: Request):
    # 可选:校验Webhook配置的Secret Token,避免恶意请求
    # req_token = request.headers.get("X-Gitlab-Token")
    # if req_token != "你配置的Secret Token":
    #     return {"status": "invalid token"}
    
    # 运行指定的Python脚本,替换为你自己的脚本路径
    subprocess.Popen(["python", "/opt/your_script.py"])
    return {"status": "success"}
  • 注意确保你的服务器接口可以被GitLab服务正常访问,内网部署的GitLab只要保证和服务器网络互通即可。

方案选择建议

  • 无特殊部署要求优先选择CI/CD方案,配置成本最低,不需要额外维护服务
  • 有指定运行环境、内网资源访问等需求时选择Webhook方案,灵活性更高

内容的提问来源于stack exchange,提问作者TechWorksLAB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:06:04