2017-08-08 96 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命令在作業階段腳本中移動,然後我將它移出一個後腳本來完成這個任務!