Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Problema ao executar o stage build-project

Ao tentar executar o stage build-project, após concluir o stage build-docker, ele falha e exibe a seguinte mensagem:

ERROR: Job failed: Error response from daemon: pull access denied for kurokimac/minha-imagem, repository does not exist or may require 'docker login': denied: requested access to the resource is denied (docker.go:142:1s)

7 respostas

Olá Marcio, tudo bem? Peço desculpas pela demora no retorno! Mas você poderia colocar aqui o conteúdo do seu arquivo .gitlab-ci.yml para gente poder verificar? De ante mão me parece um problema ser um problema com o login no Docker Hub, então suas credencias estão configuradas corretamente no GitLab? e também no seu arquivo .gitlab-ci.yml?

Fico aguardando retorno!

image: docker:19.03.0

stages:
- pre-build
- build
- test
- deploy 
- notificacao

build-docker:
  services:
    - docker:19.03.0-dind
  retry: 2  
  before_script:
    - docker info
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

  stage: pre-build
  script:
  - docker build -t minha-imagem .
  - docker tag minha-imagem kurokimac/minha-imagem:latest
  - docker push kurokimac/minha-imagem:latest

build-project:
  image: kurokimac/minha-imagem:latest
  retry: 2
  services:
  - docker:dind
  - mysql:5.7
  variables:
    MYSQL_USER: $DB_USER 
    MYSQL_PASSWORD: $DB_PASSWORD 
    MYSQL_DATABASE: $DB_DATABASE 
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD 

    DB_NAME: $DB_DATABASE
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_PORT: '3306'
    DB_HOST: 'mysql'
    SECRET_KEY: $DB_SECRET_KEY

  stage: build
  tags:
  - executor-tarefas
  dependencies:
  - build-docker
  script:
  - python manage.py makemigrations
  - python manage.py migrate

test-project:
  image: kurokimac/minha-imagem:latest
  stage: test
  services:
  - docker:19.03.0-dind
  - mysql:5.7
  variables:
    MYSQL_USER: $DB_USER 
    MYSQL_PASSWORD: $DB_PASSWORD 
    MYSQL_DATABASE: $DB_DATABASE 
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD 

    DB_NAME: $DB_DATABASE
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_PORT: '3306'
    DB_HOST: 'mysql'
    SECRET_KEY: $DB_SECRET_KEY
  dependencies:
  - build-project
  tags:
  - executor-tarefas
  script:
  - python -m unittest setUp

deploy-project:
  stage: deploy
  tags:
  - executor-deploy
  dependencies:
  - test-project
  script:
  - tar cfz arquivos.tgz *
  - scp arquivos.tgz marciokuroki@192.168.100.9:/Users/Shared/deploy/
  - ssh marciokuroki@192.168.100.9 'cd /Users/Shared/deploy/; tar xfz arquivos.tgz; /usr/local/bin/docker-compose up -d'

notificacao-sucesso:
  stage: notificacao
  tags:
  - executor-deploy
  when: on_success
  script:
  - sh notificacaoSucesso.sh

notificacao-falha:
  stage: notificacao
  tags:
  - executor-deploy
  when: on_failure
  script:
  - sh notificacaoFalha.sh

Marcio, não vi nenhum grande problema no arquivo não, só alguns espaços, o retry: 2 que não é preciso no build-project, e a versão do docker:dind no build-project que não foi especificado a versão correta que é na verdade docker:19.03.0-dind, no o código ficou assim:

image: docker:19.03.0

stages:
- pre-build
- build
- test
- deploy 
- notificacao

build-docker:
  services:
    - docker:19.03.0-dind
  retry: 2  
  before_script:
    - docker info
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

  stage: pre-build
  script:
    - docker build -t minha-imagem .
    - docker tag minha-imagem kurokimac/minha-imagem:latest
    - docker push kurokimac/minha-imagem:latest

build-project:
  image: kurokimac/minha-imagem:latest
  services:
    - docker:19.03.0-dind
    - mysql:5.7
  variables:
    MYSQL_USER: $DB_USER 
    MYSQL_PASSWORD: $DB_PASSWORD 
    MYSQL_DATABASE: $DB_DATABASE 
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD 

    DB_NAME: $DB_DATABASE
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_PORT: '3306'
    DB_HOST: 'mysql'
    SECRET_KEY: $DB_SECRET_KEY
  stage: build
  tags:
    - executor-tarefas
  dependencies:
    - build-docker
  script:
    - python manage.py makemigrations
    - python manage.py migrate

test-project:
  image: kurokimac/minha-imagem:latest
  stage: test
  services:
    - docker:19.03.0-dind
    - mysql:5.7
  variables:
    MYSQL_USER: $DB_USER 
    MYSQL_PASSWORD: $DB_PASSWORD 
    MYSQL_DATABASE: $DB_DATABASE 
    MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD 

    DB_NAME: $DB_DATABASE
    DB_USER: $DB_USER
    DB_PASSWORD: $DB_PASSWORD
    DB_PORT: '3306'
    DB_HOST: 'mysql'
    SECRET_KEY: $DB_SECRET_KEY
  dependencies:
    - build-project
  tags:
    - executor-tarefas
  script:
    - python -m unittest setUp

deploy-project:
  stage: deploy
  tags:
    - executor-deploy
  dependencies:
    - test-project
  script:
    - tar cfz arquivos.tgz *
    - scp arquivos.tgz marciokuroki@192.168.100.9:/Users/Shared/deploy/
    - ssh marciokuroki@192.168.100.9 'cd /Users/Shared/deploy/; tar xfz arquivos.tgz; /usr/local/bin/docker-compose up -d'

notificacao-sucesso:
  stage: notificacao
  tags:
    - executor-deploy
  when: on_success
  script:
    - sh notificacaoSucesso.sh

notificacao-falha:
  stage: notificacao
  tags:
    - executor-deploy
  when: on_failure
  script:
    - sh notificacaoFalha.sh

Tenta usando esse código e fala pra gente o resultado!

Acabei de testar, mesmo problema...Testei o login no docker hub, via terminal e logou normalmente. Alguma outra sugestão?

solução!

Marcio, suas variáveis estão corretas? Você já tentou alterar as as variáveis, no caso apagar e colocar novamente.

Variáveis para login docker

Outra coisa, no Docker Hub você criou o repositório público ou privado? Se estiver privado tentar deixar como público e tentar executar o Job novamente e fala pra gente o resultado.

O repositório estava privado, mudei para público e funcionou!

Obrigado!

Que legal que deu certo Marcio! Fico feliz em ajudar! Sendo assim você poderia marcar minha resposta como solução desse tópico? Assim vai ser mais fácil para outros alunos encontrarem a solução do problema!