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

Build Jenkins

Tive problemas com o Build e revendo o video do instrutor, encontrei diferenças com os códigos, conforme abaixo:

pipeline {
        environment {
            dockerImage = "${image}"
        }
        agent any

        stages {
            stage('Carregando o ENV de desenvolvimento') {
                steps {
                    configFileProvider([configFile(fileId: '<id do seu arquivo de desenvolvimento>', variable: 'env')]) {
                        sh 'cat $env > .env'
                    }
                }
            }
            stage('Derrubando o container antigo') {
                steps {
                    script {
                        try {
                            sh 'docker rm -f django-todolist-dev1'
                        } catch (Exception e) {
                            sh "echo $e"
                        }
                    }
                }
            }        
            stage('Subindo o container novo') {
                steps {
                    script {
                        try {
                            sh 'docker run -d -p 81:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/jenkins-todo-list-desenvolvimento/.env:/usr/src/app/to_do/.env --name=django-todolist-dev ' + dockerImage + ':latest'
                        } catch (Exception e) {
                            slackSend (color: 'error', message: "[ FALHA ] Não foi possivel subir o container - ${BUILD_URL} em ${currentBuild.duration}s", tokenCredentialId: 'slack-token')
                            sh "echo $e"
                            currentBuild.result = 'ABORTED'
                            error('Erro')
                        }
                    }
                }
            }
            stage('Notificando o usuario') {
                steps {
                    slackSend (color: 'good', message: '[ Sucesso ] O novo build esta disponivel em: http://192.168.33.10:81/ ', tokenCredentialId: 'slack-token')
                }
            }
        }
    }
sh 'docker rm -f django-todolist-dev1'

No video está:

sh 'docker rm -f django-todolist-dev'

E também outra linha está diferente, o job aqui está como "jenkins-todo-list-desenvolvimento"

sh 'docker run -d -p 81:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/jenkins-todo-list-desenvolvimento/.env:/usr/src/app/to_do/.env --name=django-todolist-dev ' + dockerImage + ':latest'

Já no video o nome do job está "todo-list-desenvolvimento":

sh 'docker run -d -p 81:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/todo-list-desenvolvimento/.env:/usr/src/app/to_do/.env --name=django-todolist-dev ' + dockerImage + ':latest'

Então, alterando esses itens acima funcionou para mim

4 respostas

Só para fazer um acréscimo, verifiquei que na linha, o numero 1 ao final:

sh 'docker rm -f django-todolist-dev1'

o instrutor o coloca de propósito para causar uma falha no build, mas acabou ficando no script que seguimos na transcrição do vídeo.

Olá Thalia, tudo bem? É verdade o "1" no trecho django-todolist-dev1 foi um engano, vamos resolver e deixar igual ao vídeo. Porém sobre a linha jenkins-todo-list-desenvolvimento, a mesma aparece do mesmo jeito na descrição e no vídeo do instrutor, você poderia informar pra gente qual o momento do vídeo (minuto e segundo, ex: "a partir do momento 05:20") para gente poder verificar corretamente!

solução!

Sim, esqueci de me atentar a isso, mesmo que o nome do job no video esteja todo-list-desenvolvimento, no script está jenkins-todo-list-desenvolvimento, mas para mim deu erro nesta parte e trocando o nome resolveu. Pode ser então algum problema interno no meu mesmo. De qualquer forma, caso alguém tenha o mesmo problema, talvez seja pelo mesmo motivo.

Segue uma parte do log:

Started by user Aluno Alura
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/todo-list-desenvolvimento
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Carregando o ENV de desenvolvimento)
[Pipeline] configFileProvider
provisioning config files...
copy managed file [.env-dev] to file:/var/lib/jenkins/workspace/todo-list-desenvolvimento@tmp/config2282922045965157490tmp
[Pipeline] {
[Pipeline] sh
+ cat /var/lib/jenkins/workspace/todo-list-desenvolvimento@tmp/config2282922045965157490tmp
[Pipeline] }
Deleting 1 temporary files
[Pipeline] // configFileProvider
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Derrubando o container antigo)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ docker rm -f django-todolist-dev
django-todolist-dev
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Subindo o container novo)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ docker run -d -p 81:8000 -v /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock -v /var/lib/jenkins/workspace/jenkins-todo-list-desenvolvimento/.env:/usr/src/app/to_do/.env --name=django-todolist-dev thaliastefani/django_todolist_image_build:latest
45e3e6a183cffb9b4151e0bdd98bc0ef7376919d743715f19540ea050672ac3b
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/jenkins/workspace/jenkins-todo-list-desenvolvimento/.env\\\" to rootfs \\\"/var/lib/docker/overlay2/ed21cfdecf57f0e12e92ac9aea0ab0eb5784aba1bcd7ee4bc05440ea330ac5d9/merged\\\" at \\\"/var/lib/docker/overlay2/ed21cfdecf57f0e12e92ac9aea0ab0eb5784aba1bcd7ee4bc05440ea330ac5d9/merged/usr/src/app/to_do/.env\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
...

Agradeço pela atenção!

Agora entendi Thalia, é verdade pode ser mesmo, que bom que conseguiu resolver e que compartilhou a solução aqui na comunidade!