繁体   English   中英

在 GitLab CICD 中,如何指定从哪个分支提取代码?

[英]In GitLab CICD, How to specify which branch to pull the code from?

我有 3 个分支devqaprod以及 3 个相应的环境developmenttestingproduction 因此,当代码合并到特定分支时,我只想构建该分支并部署到相应的环境

dev -> development
qa -> testing
prod -> production

dev分支是存储库的默认分支。
only使用属性,我能够根据合并代码的分支部署到特定环境。
但是在build阶段我无法弄清楚,如何告诉 gitlab 拉取代码签入的特定分支。

当 cicd 管道拉取运行器上的代码时,它总是会从默认分支拉取代码,还是会从代码签入的分支拉取代码?

这是我目前的 YAML

default:
  image: node:14
  tags:
    - my-runner
stages:          
  - build 
  - deploy

build-job:
  stage: build
  script:    
    - npm install
    - npm run build:prod
    - echo "Compile complete."
  artifacts:
    paths:
      - deploy/build.zip


deploy-dev:
  image: docker.xxxx/awscli
  stage: deploy  
  environment: 
    name: development
  script:    
    - aws s3 cp deploy/build.zip s3://dev-bucket
    - aws lambda update-function-code --function-name dev-lambda --s3-bucket dev-bucket --s3-key build.zip --region us-west-2    
  only: 
    - dev
    
deploy-testing:
  image: docker.xxxx/awscli
  stage: deploy  
  environment: 
    name: testing
  script:    
    - aws s3 cp deploy/build.zip s3://qa-bucket
    - aws lambda update-function-code --function-name qa-lambda --s3-bucket qa-bucket --s3-key build.zip --region us-west-2    
  only: 
    - qa
    
deploy-production:
  image: docker.xxxx/awscli
  stage: deploy  
  environment: 
    name: production
  script:    
    - aws s3 cp deploy/build.zip s3://production-bucket
    - aws lambda update-function-code --function-name production-lambda --s3-bucket production-bucket --s3-key build.zip --region us-west-2    
  only: 
    - prod

一般来说,你不会。 管道本质上属于特定的 git 分支/引用,并且 GitLab 运行器会在构建开始之前自动克隆适当的引用。

例如,如果您将单个提交推送到master分支,这将触发属于该推送事件的master分支上的 HEAD(新提交)的管道。 当此管道中的作业运行时,GitLab 运行器将为每个作业自动检查此特定参考。 您可以在管道 UI 中清楚地看到这一点:每个管道都与特定的分支/引用相关联:

流水线列表界面

换句话说,正是 ref 和管道之间的这种关联决定了运行器如何从存储库中检出相关代码。 您不需要在.gitlab-ci.yml中指定它。

暂无
暂无

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

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