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

GitLab CI/CD配置:分支自动构建与特性分支参数化构建

修改GitLab CI配置满足分支构建需求

以下是满足你所有要求的.gitlab-ci.yml配置:

variables:
  # 默认使用当前提交分支,手动/上游触发可覆盖指定分支
  TARGET_BRANCH: "${CI_COMMIT_BRANCH}"

stages:
  - pre-check
  - build
  - upload

# 前置检查:确保目标分支存在,不存在直接报错终止流水线
check-branch-exists:
  stage: pre-check
  image: alpine/git:latest
  script:
    - git fetch origin
    - if ! git branch -a | grep -q "remotes/origin/${TARGET_BRANCH}"; then
        echo "错误:远程仓库中不存在分支 ${TARGET_BRANCH}";
        exit 1;
      fi
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "pipeline"'

build:
  script:
    - git checkout "${TARGET_BRANCH}"
    - mvn clean install -no-transfer-progress
  image: vegardit/graalvm-maven:24.0.0
  stage: build
  artifacts:
    paths: [target/*.jar]
  rules:
    # 自动提交到main或feature分支时自动触发
    - if: '$CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH =~ /^feature\/.*/)'
    # 网页/上游job触发时,需手动确认执行
    - if: '$CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "pipeline"'
      when: manual
      allow_failure: false

upload:
  script:
    - git checkout "${TARGET_BRANCH}"
    - mvn deploy:deploy-file ...
  image: vegardit/graalvm-maven:24.0.0
  stage: upload
  rules:
    # 仅自动提交到main分支时自动触发上传
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"'
    # 手动/上游触发时,需手动确认执行
    - if: '$CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "pipeline"'
      when: manual
      allow_failure: false

配置说明

  1. 分支自动触发:

    • 提交代码到main分支时,自动执行check-branch-exists→build→upload全流程。
    • 提交代码到任意feature/xxx格式的特性分支时,自动执行check-branch-exists→build流程,不会触发upload。
  2. 手动/上游参数触发:

    • 网页触发:进入项目流水线页面点击「Run pipeline」,在变量区填写TARGET_BRANCH的值(如feature/refactorendpoint),确认后启动流水线。
    • 上游job触发:在调用流水线时通过variables: { TARGET_BRANCH: "目标分支名" }传递参数。
    • 分支不存在时,check-branch-exists任务会直接报错,流水线终止。
  3. 分支校验逻辑:

    • 通过git fetch origin拉取远程分支列表,用grep匹配目标分支,不存在则退出码设为1,触发流水线失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:57:31