GitLab CI-如果存在变量,则设置变量

GitLab CI-如果存在变量,则设置变量,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,如果构建是标记的构建,我想将破折号加上repo标记设置为Docker图像构建,如果不是,我将解释 如果我只想设置标签(如果它存在的话),那么这将是微不足道的,因为这样可以工作: build-nginx: stage: build-nginx script: - command docker build -t $CI_REGISTRY_IMAGE:nginx$CI_COMMIT_TAG . - command docker push $CI_REGISTRY_IMAGE:n

如果构建是标记的构建,我想将破折号加上repo标记设置为Docker图像构建,如果不是,我将解释

如果我只想设置标签(如果它存在的话),那么这将是微不足道的,因为这样可以工作:

build-nginx:
  stage: build-nginx
  script:
    - command docker build -t $CI_REGISTRY_IMAGE:nginx$CI_COMMIT_TAG .
    - command docker push $CI_REGISTRY_IMAGE:nginx$CI_COMMIT_TAG

如果没有标记,则可以创建
registry.example.com/image:nginx
,如果有,则可以创建
registry.example.com/image:nginx1.0
,但如何将图像命名为
registry.example.com/image:nginx-1.0
(带破折号),我必须检查是否设置了标记变量,否则,如果没有设置标记变量,我会得到一个名为
registry.example.com/image:nginx-
的图像

- if [ -z "$CI_COMMIT_TAG" ]; then docker build -t $CI_REGISTRY_IMAGE:nginx$CI_COMMIT_TAG .; else docker push $CI_REGISTRY_IMAGE:nginx-$CI_COMMIT_TAG; fi

现在,我已经通过拆分和复制我的阶段并使用“仅:-标记”解决了这个问题。