繁体   English   中英

如何根据推送的分支在 .gitlab-ci.yml 中使用不同的脚本

[英]How can I use different script in .gitlab-ci.yml depending on pushed branched

我在gitlab-ci.yml文件中有以下设置用于构建

build_app:
  image: node:10
  stage: build
  artifacts:
    expire_in: 5 minute
    paths:
      - ./dist
  script:
#    - mkdir app
#    - cp package*.json ./app
    - npm ci
#    - COPY . . ???
    - npm run build --prod

如您所见,我的构建始终带有--prod标志,当我在测试服务器上进行测试时,它也以prod数据开头

当我推送到master分支时,如何制作脚本以使用ng build --prod和推送到dev分支时的ng build --configuration=stage

每个存储库只有一个 yaml 文件。 但是您可以仅使用关键字来定义脚本的哪个部分在哪个分支上运行(有关更多详细信息,请参阅文档)。 这应该是这样的:

部署主:

阶段:-构建

构建:阶段:构建脚本:-“这里是您的命令”仅:-主

部署开发:

阶段:-构建

构建:阶段:构建脚本:-“这里是您的命令”仅:-开发

只需编写一个 shell 脚本来检查导致 ci/cd 运行的当前分支:

- case "$CI_COMMIT_BRANCH" in 
  "master") ng build --prod; ;;
  "dev") ng build --configuration=stage; ;;
  esac

或者使用简单的 if else 可能更具可读性:

- if [ "$CI_COMMIT_BRANCH" = "master" ]; then
       ng build --prod;
  elif [ "$CI_COMMIT_BRANCH" = "dev" ]; then
       ng build --configuration=stage;
  fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM