2017-08-08 90 views
1

我有一个特拉维斯CI构建正试图推到一个码头工人的注册表,在这里泊坞窗推送错误是我在构建日志中看到:与无效的标签或参考

[info] Built image repo.treescale.com/[secure]/inland24/plant-simulator:1.0-SNAPSHOT 

但下一行,我能看到如下:

Error parsing reference: "/:" is not a valid repository/tag: invalid reference format 

这是我有我的码头工人推命令:

docker push $DOCKER_REGISTRY_URL/$APPLICATION_NAME:$IMAGE_VERSION_DEV; 

这里是参数:

- APPLICATION_NAME = [secure]/inland24/plant-simulator 
    - IMAGE_VERSION_DEV = 1.0-SNAPSHOT 
    - DOCKER_REGISTRY_URL = repo.treescale.com 

假设[secure]解析为正确的用户名!我得到的这个错误是什么以及如何解决它?

我曾尝试列出所有的图片,我可以看到本地机器的构建正在运行上存在我的形象:

REPOSITORY           TAG      IMAGE ID   CREATED     SIZE 
repo.treescale.com/[secure]/inland24/plant-simulator 1.0-SNAPSHOT    34842cf7482e  Less than a second ago 225 MB 
anapsix/alpine-java         8_server-jre_unlimited bd197f461851  11 days ago    124 MB 

回答

1

你的错误清楚地表明什么是错的。您正在使用

docker push $DOCKER_REGISTRY_URL/$APPLICATION_NAME:$IMAGE_VERSION_DEV; 

错误解析参考:“/:”是不是一个有效的资料库/标签:无效引用格式

如果我空白的所有环境变量然后我得到

docker push /: 

这给了我同样的错误。在docker push之前使用env命令,并确保您的环境变量实际存在与否。如果没有,那么弄清楚为什么

+0

是的!这看起来像是一个来自travis的bug - 环境变量没有被传递!我用travis ci创建了一个问题 - https://github.com/travis-ci/travis-ci/issues/8231 – sparkr

0

括号内是不允许的。

https://github.com/docker/distribution/blob/master/docs/spec/api.md

一个存储库名称被分解成路径组件。 存储库名称的组件必须至少包含一个小写字母数字 字符,可以使用句点,短划线或下划线进行分隔。 更严格,必须在正则表达式匹配 [A-Z0-9] +(?:[._-] [A-Z0-9] +)*

+0

括号不是由我给出的,而是我的用户名和密码在我的Travis CI中相应配置! – sparkr

0

我解决了这个问题,通过移动确实在我的阳明如下所示的工作说明外泊坞窗推位片段:

jobs: 
    include: 
    - stage: test 
     script: sbt clean coverage test coverageReport 
    - stage: build docker image 
     script: 
     - if [ $TRAVIS_BRANCH == "master" ]; then 
      sbt docker:publishLocal; 
      docker images; 
      fi 

after_script: 
    - if [ $TRAVIS_BRANCH == "master" ]; then echo "Completed building docker image"; 
     docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_URL; 
     docker push $DOCKER_APP_NAME; 
    fi 
    - echo $TRAVIS_BRANCH 

所以前面我有泊坞窗登录和docker push命令在作业阶段脚本中移动,然后我将它移出一个后脚本来完成这个任务!