【发布时间】: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