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

[Sugestão] Atualização do Jenkins e de libraries inconsistentes

Na versão original do projeto é impossível inicializar os contâineres (docker-compose up -d --build --remove-orphans), aparecem vários erros. Obviamente, aparece um cada vez que você corrige o anterior rs, então bati bastante cabeça e levei umas horas até corrigir todos e fazer funcionar.

Seguem os erros que encontrei e o que fiz para corrigir, caso alguém esteja passando pelo mesmo problema:

  • Versão incompatível do Jenkins: necessária atualização

  • O plugin blueocean:1.25.5 é incompatível com a versão 1.303-400.v35c2d8258028) do github-api, necessário mudar a versão do github-api para uma compatível

  • O sistema impediu a instalação de pacotes Python no nível do sistema, foi necessário colocar a instalação do pip e venv dentro do dockerfile para que fosse criado um ambiente virtual que garantisse a execução isolada, além de ter que modificar a variável de ambiente PATH para garantir que o Python e o pip do ambiente virtual fossem usados.

  • numpy , flask, mlflow, joblib, flake8, autopepe8, todos eles estavam com versões bem antigas que estavam dando problemas de compatibilidade com outras bibliotecas do requirements.

Segue minha correção:

Dockerfile-jenkins

FROM jenkins/jenkins:lts

USER jenkins

# Instalação dos plugin necessário
RUN jenkins-plugin-cli --plugins blueocean:1.25.5 build-timestamp:1.0.3 timestamper:1.17 pollscm:1.3.1 github-api:1.321-488.v9b_c0da_9533f8

USER root

# Configurações de ambiente
ENV FLUENTD_HOST "fluentd"
ENV FLUENTD_PORT "24224"
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
ENV JENKINS_URL "http://jenkins:10000"
ENV ACCESS_KEY ${ACCESS_KEY}
ENV SECRET_KEY ${SECRET_KEY}

# Instalar pacotes necessários para criar o ambiente virtual
RUN apt update && \
    apt install -y python3 python3-pip python3-venv

# Criar um ambiente virtual
RUN python3 -m venv /usr/src/app/venv

# Garantir que o Python do ambiente virtual seja usado
ENV PATH="/usr/src/app/venv/bin:$PATH"

# Copiar requirements.txt para o container
COPY ./requirements.txt /usr/src/app/requirements.txt

# Instalar as dependências dentro do ambiente virtual
RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt

# Copiar arquivos de configuração do Jenkins
COPY jenkins/1-configureJenkins.groovy /usr/share/jenkins/ref/init.groovy.d/1-configureJenkins.groovy
COPY jenkins/2-addAccessKeys.groovy /usr/share/jenkins/ref/init.groovy.d/2-addAccessKeys.groovy

requirements.txt

numpy==1.26.4
pandas==1.5.3
scikit-learn==1.2.2
flask==2.3.3
mlflow==2.3.2
joblib==1.3.2
lime==0.2.0.1
fluent-logger==0.10.0
bokeh==3.3.4
arrow==1.3.0
wickedhot==0.2.5
boto3==1.34.57
protobuf==4.25.3

# Testing Dependencies
requests-mock==1.11.0
flake8==7.0.0
flake8-print==5.0.0
autopep8==2.1.0
snakeviz==2.2.0
pytest==7.4.4
pytest-cov==4.1.0

coverage==7.4.4
2 respostas
solução!

Ei, Adan! Tudo bem?

Muito obrigada por trazer as soluções que você encontrou para os impedimentos que surgiram.Realmente, lidar com versões incompatíveis e configurações de ambiente no Docker pode ser um desafio, mas você fez um ótimo trabalho ao isolar as dependências no ambiente virtual e atualizar as bibliotecas.

Com certeza o seu post será de grande valia quando o setor responsável for aplicar melhorias no conteúdo.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Muito obrigado, passei horas com GPT e afins tentando resolver e não tinha tido sucesso.