2017-04-18 70 views
4

這就是我如何做一些棉絨測試(eslint)。Gitlab CI/Docker:使用自定義圖像作業

linter: 
    image: ubuntu:16.04 
    stage: test 
    tags: 
    - testing 
    before_script: 
    - apt-get update -y 
    - apt-get install nodejs-legacy -yqq 
    - apt-get install curl -yqq 
    - curl https://install.meteor.com/ | sh 
    - meteor npm install eslint eslint-plugin-react 
    script: 
    - ./node_modules/.bin/eslint --ext .js --ext .jsx . 

但是,每次測試都需要將軟件包安裝到Ubuntu鏡像,這需要時間。

所以我想構建一個與此確切的圖像。我想出了這個Dockerfile:

FROM ubuntu:16.04 
RUN apt-get update -y 
RUN apt-get install nodejs-legacy -yqq 
RUN apt-get install curl -yqq 
RUN apt-get clean && apt-get autoclean && apt-get autoremove 
RUN curl https://install.meteor.com/ | sh 

然後我做

$ docker build -t linter-testing:latest . 

這YML文件:

linter: 
    image: linter-testing:latest 
    stage: test 
    tags: 
    - testing 
    before_script: 
    - meteor npm install eslint eslint-plugin-react 
    script: 
    - ./node_modules/.bin/eslint --ext .js --ext .jsx . 

但它失敗,此錯誤:

ERROR: Job failed: Error response from daemon: repository linter-testing not found: does not exist or no pull access 

那麼爲什麼這個圖像不存在,al顯示我確切的形象......

回答

3

你需要編輯config.toml文件,該文件是在/etc/gitlab-runner您亞軍的機器上,使用下列

[runners.docker] 
    pull_policy = "if-not-present" 

參閱相關的問題here

+0

我不太確定在哪裏創建toml文件。 – user3142695

+0

該文件應該在'/ etc/gitlab-runner'中。我用這個信息編輯了答案。 – Jawad

+0

它應該已經存在。您可能需要以root身份編輯它。只需找到'[runners.docker]'部分並添加/修改'pull_policy ='if-not-present'' – Jawad