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'