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

如何配置GitLab Pipeline仅在非master分支执行指定操作

GitLab CI 分支差异化执行脚本解决方案

方案一:使用rules拆分作业(推荐,符合GitLab CI最佳实践)

通过extends关键字复用公共逻辑,避免重复代码,不同分支自动匹配对应作业执行:

# 公共镜像构建推送模板,无需单独执行
.docker-build-push:
  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA

# master分支专属作业
build-master:
  extends: .docker-build-push
  rules:
    - if: $CI_COMMIT_BRANCH == "master"

# 非master分支专属作业
build-non-master:
  extends: .docker-build-push
  script:
    # 继承模板脚本后新增Lambda更新逻辑
    - aws lambda update-function-code --region $AWS_DEFAULT_REGION --function-name function1 --image-uri $DOCKER_REGISTRY/function1:$CI_COMMIT_SHA
  rules:
    - if: $CI_COMMIT_BRANCH != "master"

说明:此方案不同分支的执行日志独立拆分,便于后续问题排查,是GitLab官方推荐的分支差异化配置方式

方案二:单作业内加Shell条件判断

如果希望所有逻辑合并在同一个作业内,可直接通过GitLab预置的环境变量在脚本中做分支判断:

build-deploy:
  script:
    - docker build -t $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA .
    - docker push $DOCKER_REGISTRY/$APP_NAME:$CI_COMMIT_SHA
    # 仅非master分支执行Lambda更新
    - |
      if [ "$CI_COMMIT_BRANCH" != "master" ]; then
        aws lambda update-function-code --region $AWS_DEFAULT_REGION --function-name function1 --image-uri $DOCKER_REGISTRY/function1:$CI_COMMIT_SHA
      fi

说明:此方案配置更精简,适合分支逻辑差异较小的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:39:01