如何根据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发布于 2021-04-13 15:46:55
您需要在全局workflow关键字下定义您的规则,以消除语法错误。有了这个设置,只有当提交分支是develop或master时,才会创建管道,并且应该相应地设置变量。
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: ""https://stackoverflow.com/questions/67066763
复制相似问题