使用gitlab api实现了一个gitlab文件变更通知器

534 阅读1分钟

前言

很多开发者都在使用公司私有化部署的gitlab仓库进行代码托管,在某些场景下希望监控某个文件的变更,比如配置文件的变更,错误代码定义的变更,这些需要通知到运维,或者产品,已做响应的信息同步。

我实现了一个gitlab 文件监控器,用于检查指定分支的文件是否发生了变更,在有变更时,把变更内容通过邮件的方式通知到接收人的邮箱。

代码已经放到mobiusy/gitlab-file-watcher (github.com), 欢迎start, fork, 提需求。

如何使用

使用Node运行

要使用这个工具,您需要执行以下步骤:

  1. 将仓库克隆到您的本地机器。
  2. 运行 npm install 安装所需的依赖项。
  3. 在项目的根目录下创建一个 .env 文件,并添加以下环境变量:
    # gitlab配置
    GITLAB_URL=https://gitlab.com
    # 相对于仓库根目录的文件路径,您想要检查的文件
    FILE_PATH=src/lib/exception-code.ts
    # 格式:命名空间/仓库
    REPOSITORY=your-group/repository-name
    # 如何生成您的私有令牌,请参阅:https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token
    PRIVATE_TOKEN=xxxxxxxxxxxx
    # 提交时间,格式:YYYY-MM-DDTHH:mm:ssZ
    SINCE=2023-07-04T08:00:00.000Z
     # 运行计划
    # Cron风格的调度,参见:https://crontab.guru
    SCHEDULE=*/5 * * * *
     # 电子邮件配置
    EMAIL_HOST=smtp.domain.com
    PORT=465
    SECURE=true
    AUTH_USER=your-email@example.com
    AUTH_PASS=your-email-password
    # 收件人,用逗号分隔
    RECIPIENTS=tom@example.com,jerry@example.com
    
  4. 运行 npm run start 启动工具。

使用Docker运行

在项目的根目录下运行以下命令:

docker build -t gitlab-change-notifier:latest .
docker run -d \
  -v /absolute/path/to/.env:/app/.env \
  --name gitlab-change-notifier \
  --restart=always \
  gitlab-change-notifier:latest

使用Docker Compose运行

在项目的根目录下运行以下命令: docker-compose up -d

Email example

1692324342394.png