【问题标题】:How to define global variables based on rules on gitlabci?如何根据gitlab ci上的规则定义全局变量?
【发布时间】:2021-07-08 00:41:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: continuous-integration gitlab environment-variables gitlab-ci gitlab-ci-runner


    【解决方案1】:

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

    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: ""
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2022-08-18
      • 2020-06-25
      • 1970-01-01
      • 2021-12-24
      • 2017-04-16
      • 2019-12-18
      • 2021-06-25
      • 2017-04-08
      相关资源
      最近更新 更多