0
respostas

Erro no SCP

Consegui terminar o curso direcionando para um diretório fora do /usr, que não seria protegido. Precisei criar um /home/<meu-usuário>/Documents/deploy, ou seja, já precisei ter criado o diretório antecipadamente. Ainda assim, gostaria que fosse esclarecida a dúvida abaixo, considerando que não vi outros problemas iguais serem reportados.

----------x----------x----------x----------x----------x----------

Ao fazer o teste como indicado na aula, comentando todo o restante do código e deixando apenas o final para agilizar, o retorno que tenho é o que consta abaixo.

Pude notar também que não há a criação do diretório /usr/src/deploy/ na minha máquina, embora o teste com o SSH tenha resultado na correta conexão entre o container do runner (de dentro do usuário gitlab-runner) à minha máquina.

O que pode estar causando o problema e como solucionar?

Logs no Gitlab:

Running with gitlab-runner 13.10.0 (54944146)
  on runner-deploy sQVC3ScF
Preparing the "shell" executor 00:00
Using Shell executor...
Preparing environment 00:00
Running on 84b513ffee8d...
Getting source from Git repository 00:01
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/sQVC3ScF/0/andre.raja/bytebank/.git/
Checking out 8acb0971 as master...
Removing arquivos.tgz
Skipping object checkout, Git LFS is not installed.
Skipping Git submodules setup
Executing "step_script" stage of the job script 00:01
$ tar cfz arquivos.tgz *
$ scp arquivos.tgz acrajag@172.18.0.1:/usr/src/deploy/
scp: /usr/src/deploy/: Is a directory
Cleaning up file based variables 00:00
ERROR: Job failed: exit status 1

Pesquisando descobri que existe um bug e a mensagem correta deveria ser a inexistência do diretório, já que o scp não cria o diretório. Com isso, o erro foi modificado:

$ tar cfz arquivos.tgz *
$ scp arquivos.tgz acrajag@172.18.0.1:/usr/src/deploy/
scp: /usr/src/deploy//arquivos.tgz: Permission denied
Cleaning up file based variables 00:00
ERROR: Job failed: exit status 1

Tentei inserir um sudo antes do comando, mas também não funciona. Já não sei mais o que fazer.

Segue também o .gitlab-ci.yml:

image: docker:19.03.0

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

#build-docker:
#  services:
#    - docker:19.03.0-dind
#  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 acrajag/minha-imagem:latest
#    - docker push acrajag/minha-imagem:latest
#
#build-project:
#  image: acrajag/minha-imagem:latest
#  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: acrajag/minha-imagem:latest
#  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: test
#  dependencies:
#    - build-project
#  tags:
#    - executor-tarefas
#  script:
#    - python -m unittest setUp

deploy-project:
  stage: deploy
  tags:
    - executor-deploy
  script:
    - tar cfz arquivos.tgz *
    - scp arquivos.tgz acrajag@172.18.0.1:/usr/src/deploy/
    - ssh acrajag@172.18.0.1 'cd /usr/src/deploy/; tar xfz arquivos.tgz; /usr/local/bin/docker-compose up -d'