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

如何配置GitLab CI/CD合入main分支时自动识别变更目录部署

配置步骤

你只需要修改项目根目录下的.gitlab-ci.yml文件,按以下规则调整即可:

  • 第一步:配置流水线自动触发规则
    新增workflow块,指定仅当main分支收到推送(MR合入后会自动触发main分支的推送事件)时启动流水线:

    workflow:
      rules:
        # MR合入main分支时自动触发
        - if: $CI_COMMIT_BRANCH == "main"
          when: always
        # 可保留原有手动触发规则,不需要就删掉
        - if: $CI_PIPELINE_SOURCE == "web"
          when: always
        - when: never
    
  • 第二步:按目录配置部署作业的变更触发规则
    利用GitLab CI内置的changes关键字,给每个目录对应的部署作业设置触发条件,同时自动注入对应目录变量,不需要用户手动输入:

    # 部署folder-a的作业
    deploy_folder_a:
      variables:
        TARGET_DIR: "folder-a"
      script:
        - cd $TARGET_DIR
        # 替换为你实际的部署命令
        - python python-a.py
      rules:
        - changes:
            # 只要folder-a目录下有任意文件变更,就触发该作业
            - folder-a/**/*
    
    # 部署folder-b的作业
    deploy_folder_b:
      variables:
        TARGET_DIR: "folder-b"
      script:
        - cd $TARGET_DIR
        # 替换为你实际的部署命令
        - python python-b.py
      rules:
        - changes:
            # 只要folder-b目录下有任意文件变更,就触发该作业
            - folder-b/**/*
    
  • 可选:动态适配新增目录的通用方案
    如果后续会新增大量业务目录,不想每个目录单独写作业,可以用动态识别变更目录的方式统一处理:

    stages:
      - detect
      - deploy
    
    # 第一步识别所有变更的一级目录
    detect_changed_dirs:
      stage: detect
      script:
        # 对比本次提交和上一次提交的差异,提取变更的一级目录,过滤非业务目录后写入变量文件
        - CHANGED_DIRS=$(git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA | cut -d'/' -f1 | uniq | grep -E '^folder-' | tr '\n' ' ')
        - echo "CHANGED_DIRS=$CHANGED_DIRS" >> deploy.env
      artifacts:
        reports:
          dotenv: deploy.env
    
    # 第二步批量部署所有变更目录的代码
    batch_deploy:
      stage: deploy
      script:
        - for dir in $CHANGED_DIRS; do
            cd $dir;
            # 替换为你实际的部署命令,所有目录的部署逻辑一致就可以用这种方式
            python ./${dir#folder-}.py;
            cd ..;
          done
    

如果多个目录同时有变更,上述两种方案都会自动触发所有对应目录的部署,不需要额外人工操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:06:05