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

如何在GitHub仓库文件变更/合并时调用外部.NET 6.0 REST API

用GitHub Actions实现文件变更触发外部API调用

核心思路

通过GitHub Actions监听main分支的push事件(包含PR合并到main的场景),筛选出变更的.txt文件,然后调用你的.NET 6.0 REST API发送文件内容。

分步实现

1. 编写工作流配置文件

在仓库的.github/workflows目录下创建sync-files.yml,内容如下:

name: Sync Changed TXT Files to API

on:
  push:
    branches: [ main ]
    paths: [ '**.txt' ] # 仅监听所有.txt文件的增改操作

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取仓库代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 2 # 拉取最近两次提交记录,用于对比变更文件

      - name: 获取变更的.txt文件列表
        id: changed-files
        run: |
          # 对比当前提交与上一次提交,筛选出所有变更的.txt文件
          CHANGED_FILES=$(git diff --name-only HEAD^ HEAD | grep '\.txt$' | tr '\n' ' ')
          echo "files=$CHANGED_FILES" >> $GITHUB_OUTPUT

      - name: 发送文件到外部API
        if: steps.changed-files.outputs.files != '' # 仅当存在变更文件时执行
        run: |
          for FILE in ${{ steps.changed-files.outputs.files }}; do
            # 读取文件内容并POST到指定API端点
            curl -X POST \
              -H "Content-Type: text/plain" \
              -d @"$FILE" \
              "${{ secrets.API_ENDPOINT }}"
          done
        env:
          API_ENDPOINT: ${{ secrets.API_ENDPOINT }}

2. 配置GitHub Secrets

进入仓库的Settings > Secrets and variables > Actions页面,新建一个名为API_ENDPOINT的Secret,填入你的.NET API完整地址(例如https://your-service/api/process-file)。

3. 处理API认证(可选)

如果你的API需要身份验证(比如Bearer Token):

  • 新增一个API_TOKEN的Secret,填入你的认证令牌
  • 修改curl命令,添加认证头:
curl -X POST \
  -H "Content-Type: text/plain" \
  -H "Authorization: Bearer ${{ secrets.API_TOKEN }}" \
  -d @"$FILE" \
  "${{ secrets.API_ENDPOINT }}"

关键细节说明

  • 触发场景覆盖:无论是直接在main分支手动修改推送,还是从功能分支合并PR到main,只要有.txt文件变更,工作流都会自动触发。
  • 编码兼容处理:如果你的.txt文件使用非UTF-8编码(如GBK),可以先转码再发送,例如:
iconv -f GBK -t UTF-8 "$FILE" > temp.txt
curl -X POST -d @temp.txt "${{ secrets.API_ENDPOINT }}"
  • 失败重试机制:为避免网络波动导致API调用失败,可给curl添加重试参数:curl --retry 3 --retry-delay 2 ...

替代方案:GitHub Webhooks

如果不想用GitHub Actions,也可以直接配置GitHub Webhooks:

  1. 在仓库Settings > Webhooks页面新建Webhook,选择监听push事件,勾选content类型的payload。
  2. 开发一个中间服务,接收GitHub的Webhook请求,解析出变更的.txt文件,再转发到你的.NET API。
    不过这种方式需要自己维护中间服务,不如GitHub Actions开箱即用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:40:47