Configurando o Publicador HTML no Jenkins para Exibir CSS
Resposta Rápida
Para exibir corretamente o CSS em relatórios HTML no Jenkins, você precisará modificar a Política de Segurança de Conteúdo (CSP). Insira o seguinte comando no console de script do Jenkins:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "style-src 'self' 'unsafe-inline';")
Essa abordagem permite o uso de estilos inline e arquivos CSS do seu domínio, restaurando a aparência familiar dos seus relatórios sem comprometer o controle da sua CSP.
Analisando a CSP e o CSS do Jenkins
Entendendo o Problema da CSP
O Jenkins possui uma política CSP rígida: por padrão, ele bloqueia todos os elementos potencialmente inseguros, incluindo JavaScript e CSS, para evitar ameaças potenciais.
Impacto da CSP nos Relatórios do Jenkins
Como resultado dessa política de segurança estrita, os relatórios do Jenkins perdem sua formatação—os estilos CSS e JavaScript nos documentos HTML não são executados, fazendo com que os documentos apareçam simplificados e sem vida.
Aplicando uma Solução Usando CSP
Para aplicar a correção, siga estes passos:
- Navegue até Gerenciar Jenkins.
- Abra o Console de Script.
- Cole e execute o script da seção "Resposta Rápida".
- Para usuários do IntelliJ IDEA, você não precisará reiniciar o servidor como um bônus.
Segurança em Primeiro Lugar
Definir a CSP como zero não é recomendado, pois esse passo pode ser comparado a deixar sua porta da frente escancarada. Use diretivas específicas como 'self' e 'unsafe-inline' para equilibrar segurança e funcionalidade.
Visualização
Imagine o seguinte cenário: você tem uma casa:
Jenkins 🏠: há paredes e um teto, mas sem expressividade, sem estilo!
Então você ativa a CSP:
💡 Política de Segurança de Conteúdo: Vamos ativar o CSS! 🎨
E de repente, sua casa ganha vida:
Jenkins 🏠, revitalizado pelo CSS: Paredes vibrantes, um jardim magnífico! 🎨🌷
Dominando Cenários Complexos
Automatizando a Correção da CSP
Adicione um script Groovy ao seu pipeline ou ao processo de inicialização do Jenkins, para que a CSP seja configurada automaticamente, livrando você da necessidade de lembrar de definir isso.
Usando o Plugin de Gatilho de Inicialização
O plugin de Gatilho de Inicialização simplificará a configuração da CSP sempre que o Jenkins iniciar, criando um conforto similar ao de uma cafeteira de manhã.
Trabalhando com Relatórios em Diversos Ambientes
Algumas configurações, particularmente Serenity BDD ou quando o Jenkins é executado em CentOS, podem enfrentar problemas de acesso a recursos devido às políticas do SELinux. Certifique-se de que a segurança do seu sistema seja compatível com as configurações do Jenkins.
Monitorando Após as Alterações
Após fazer alterações na CSP, fique atento ao estado do seu sistema e ao Plugin de Publicação HTML para verificar se a funcionalidade de relatórios permanece inalterada e se os resultados atendem às expectativas.
Verificando a Precisão dos Relatórios
Após todas as operações, certifique-se de revisar os relatórios para confirmar que estão coloridos e contêm exatamente as informações esperadas, enquanto os estilos CSS estão corretamente aplicados aos documentos.
Recursos Úteis
- HTML Publisher | Plugin do Jenkins — Guia sobre como usar o plugin HTML Publisher do Jenkins.
- Configurando a Política de Segurança de Conteúdo — Guia detalhado sobre como configurar a CSP no Jenkins.
- Tipos MIME (tipos de mídia IANA) - HTTP | MDN — Cobertura abrangente de tipos MIME.
- Como Incluir CSS — Guia do W3Schools sobre como adicionar CSS corretamente para evitar possíveis erros.
- GitHub - jenkinsci/htmlpublisher-plugin: Plugin htmlpublisher do Jenkins — Código fonte do plugin que cria relatórios HTML no Jenkins.
- CSP Evaluator — Uma ferramenta do Google para avaliar e aprimorar estratégias de CSP.