首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据gitlabci上的规则定义全局变量?

如何根据gitlabci上的规则定义全局变量?
EN

Stack Overflow用户
提问于 2021-04-13 07:11:02
回答 1查看 51关注 0票数 0

如何根据gitlabci上的规则定义全局变量?

我在这个脚本中有一个语法错误,我想知道如何修复它。我的目标是根据我的分支使用不同的环境变量。

是否可以为两个阶段(构建和部署)定义一次环境变量列表?

如果没有,我如何减少和简化我的脚本以避免冗余?我测试了锚点,但是基于我的分支为我的所有脚本定义全局环境变量的可能性真的很棒!

代码语言:javascript
复制
rules:
  - if: $CI_COMMIT_BRANCH == /develop/
    variables:
      BUILD_ENV: "build:staging"
      CLUSTER_NAME: "STAGING"
      SERVICE_NAME: "WebappSTAGING"
      TASK_DEFINITION_NAME: "FlaskSTAGING"
      S3_BUCKET_URL: ""
  - if: $CI_COMMIT_BRANCH == /master/
    variables:
      BUILD_ENV: "build"
      CLUSTER_NAME: ""
      SERVICE_NAME: ""
      TASK_DEFINITION_NAME: ""
      S3_BUCKET_URL: ""


image: docker:19.03.10
#image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-ecs:latest
services:
  - docker:dind

before_script:
  - IMAGE_TAG=$CI_COMMIT_BRANCH
  - apk add --no-cache curl jq python py-pip
  - pip install awscli
  - pip install ecs-deploy
  - aws ecr get-login-password --region eu-west-3 | docker login --username AWS --password-stdin $REPOSITORY_URL

stages:
  - build
  - deploy

build_container:
  stage: build
  script:
    - echo "Building Flask image..."
    - docker build -t $REPOSITORY_URL/flask:$IMAGE_TAG ./Flask_server
    - echo "Tagging Flask image..."
    - docker tag $REPOSITORY_URL/flask:$IMAGE_TAG $REPOSITORY_URL/flask:$IMAGE_TAG
    - echo "Pushing Flask image..."
    - docker push $REPOSITORY_URL/flask:$IMAGE_TAG
  only:
    - develop
    - master

build_staticfiles:
  stage: build
  image: node:14
  before_script:
    - nodejs -v
    - npm -v
  script:
    - cd client
    - npm install
    - npm run $BUILD_ENV
  artifacts:
    paths:
    - client/dist/
    expire_in: 30 minutes
  only:
    - develop
    - master


deploy_container:
  stage: deploy
  script:
    - echo $REPOSITORY_URL/flask:$IMAGE_TAG
    - ecs deploy $CLUSTER_NAME $SERVICE_NAME --timeout -1
  only:
    - develop
    - master

deploy_static_files:
  stage: deploy
  script:
    - aws s3 cp client/dist/ S3_BUCKET_URL --recursive
  only:
    - develop
    - master
EN

回答 1

Stack Overflow用户

发布于 2021-04-13 15:46:55

您需要在全局workflow关键字下定义您的规则,以消除语法错误。有了这个设置,只有当提交分支是develop或master时,才会创建管道,并且应该相应地设置变量。

代码语言:javascript
复制
workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == /develop/
      variables:
        BUILD_ENV: "build:staging"
        CLUSTER_NAME: "STAGING"
        SERVICE_NAME: "WebappSTAGING"
        TASK_DEFINITION_NAME: "FlaskSTAGING"
        S3_BUCKET_URL: ""
    - if: $CI_COMMIT_BRANCH == /master/
      variables:
        BUILD_ENV: "build"
        CLUSTER_NAME: ""
        SERVICE_NAME: ""
        TASK_DEFINITION_NAME: ""
        S3_BUCKET_URL: ""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67066763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档