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

如何在GitHub合并Dev到Master分支时自动执行自定义脚本?

实现Dev分支合并/推送至Master时自动执行自定义脚本的方案

完全可以通过GitHub自带的GitHub Actions实现这个需求,以下是具体的实现步骤:

1. 创建GitHub Actions工作流文件

在仓库根目录下新建.github/workflows文件夹,然后在其中创建一个YAML格式的工作流配置文件,比如auto-run-script.yml。

2. 配置工作流触发条件

设置工作流在以下场景触发:

  • 从Dev分支向Master分支发起的PR被合并
  • 直接将Dev分支的代码推送(或合并)到Master分支

示例配置:

on:
  # 当PR合并到master时触发
  pull_request:
    branches: [ master ]
    types: [ closed ]
    paths-ignore:
      - '.github/workflows/**'
  # 当代码推送到master时触发(含直接合并Dev到Master后推送的情况)
  push:
    branches: [ master ]
    paths-ignore:
      - '.github/workflows/**'

3. 编写工作流执行步骤

在工作流中拉取Dev分支的代码、执行自定义脚本,若脚本修改了代码,还可以自动提交并推送到Dev分支(可选)。

完整示例配置:

name: Auto Run Script on Dev When Merge to Master

on:
  pull_request:
    branches: [ master ]
    types: [ closed ]
    paths-ignore:
      - '.github/workflows/**'
  push:
    branches: [ master ]
    paths-ignore:
      - '.github/workflows/**'

jobs:
  run-script-on-dev:
    runs-on: ubuntu-latest
    steps:
      # 检查PR是否真的被合并,避免PR关闭但未合并时执行
      - name: Skip if PR not merged
        if: github.event_name == 'pull_request' && github.event.pull_request.merged == false
        run: exit 1

      # 拉取仓库代码并切换到Dev分支
      - name: Checkout Dev branch
        uses: actions/checkout@v4
        with:
          ref: dev
          fetch-depth: 0 # 拉取完整提交历史

      # 执行自定义shell脚本
      - name: Execute custom script
        run: |
          # 替换为你的脚本实际路径,比如./scripts/env-update.sh
          chmod +x ./scripts/your-custom-script.sh
          ./scripts/your-custom-script.sh

      # (可选)脚本修改代码后自动提交推送到Dev分支
      - name: Commit and push changes to Dev
        if: success()
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          git add .
          git commit -m "Auto update after merge to master via GitHub Actions" || echo "No changes to commit"
          git push origin dev
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4. 关键说明

  • 触发逻辑:PR触发时会先校验是否真的完成合并,避免误触发;直接推送Master分支时会直接执行后续流程。
  • 脚本权限:通过chmod +x确保自定义脚本拥有执行权限,避免报错。
  • 自动提交:如果脚本修改了Dev分支的代码(比如替换硬编码环境变量),工作流会自动提交并推送回Dev分支,无需手动操作。
  • 权限配置:GITHUB_TOKEN是GitHub自动生成的秘钥,默认拥有仓库读写权限,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:22:35