GitLab CI配置报错:变量定义需为字符串或哈希,求排查
GitLab CI配置错误:variable definition must be either a string or a hash
问题原因
错误提示明确指向变量定义类型不符合要求——GitLab CI要求所有变量值必须是字符串或哈希结构。你的配置中IMAGE_TAG: 1.1这一行,YAML解析器会把1.1识别为浮点数类型,而非字符串,这直接违反了GitLab CI的变量类型规则,导致解析失败。另外,DEV_SERVER_HOST: 3.239.229.167虽然IP地址通常不会被误解析,但为了避免潜在的YAML解析问题,建议统一用引号包裹。
解决方法
将变量值用双引号或单引号包裹,强制YAML解析为字符串类型。修改后的variables部分如下:
variables: IMAGE_NAME: $CI_REGISTRY_IMAGE IMAGE_TAG: "1.1" DEV_SERVER_HOST: "3.239.229.167"
额外优化建议(非必须)
deploy_to_dev的script中的多行ssh命令,可使用YAML折叠块语法>提升代码可读性,避免引号换行的潜在问题:
deploy_to_dev: stage: deploy tags: - ec2 - shell - remote script: - > ssh -o StrictHostKeyChecking=no -i $SSH_PRIVATE_KEY ubuntu@$DEV_SERVER_HOST " docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY && docker run -d -p 3000:3000 $IMAGE_NAME:$IMAGE_TAG"
内容的提问来源于stack exchange,提问作者Kartheek
相关产品推荐
相关产品推荐

