Ao implementar a filosofia da CI/CD em uma empresa os times de TI e desenvolvimento buscam automatizar ao máximo as tarefas repetitivas que não necessitam de intervenção humana, como compilação, testes unitários, analise estática e dinâmica de código, publicação em ambientes de desenvolvimento, testes e produção.
Um problema que encontrei recentemente foi que após a publicação em produção a aplicação ficava instável, apresentando pequenas falhas que só eram corrigidas após um especialista entrar na console da Akamai e realizar uma limpeza do cache para a URL da aplicação, um PURGE.
Como já utilizamos diversas práticas de CI/CD na empresa e a aplicação já tem um pipeline no Jenkins que vai da compilação até a publicação, tive meu momento eureka e pensei: Vamos colocar o PURGE no cache da Akamai na pipeline do Jenkins.
Após pesquisar bastante encontrei duas soluções da própria Akamai para gerenciar não apenas o CDN, mas toda a plataforma Akamai e seus vários produtos, o Akamai CLI e uma ferramenta específica para fazer o PURGE do cache CDN, o Akamai CLI PURGE.
Pesquisando sobre como usar o Akamai CLI PURGE na pipeline do Jenkins encontrei a solução que acredito ser a mais eficiente e elegante, afinal como disse da Vinci: “a simplicidade é o último grau da sofisticação” , e é nesta solução que vou focar no restante do post.
A Akamai desenvolveu uma imagem Docker própria para fazer o PURGE no cache CDN e ela está disponível no DockerHub, então você já deve estar imaginando que vamos usar esta imagem no Jenkins e você tem razão, mas antes temos alguns passos.
De acordo com a documentação da Akamai, para usar o Akamai CLI e o Akamai CLI PURGE você precisa de um arquivo de configuração para armazenar suas credenciais de acesso, o .edgerc que por padrão fica no seu diretório home.
Se você quiser criar seu arquivo manualmente, o formato o arquivo é o seguinte:
[default]
host =
client_token =
client_secret =
access_token =
Para criar sua credencial de acesso você pode seguir este manual.
Jenkins
Muito bem, agora você já tem o seu arquivo .edgerc e já pode usar a pipeline do Jenkins para fazer o purge do cache na Akamai, ou usar qualquer outra aplicação da Akamai. Mas para usar as credenciais você precisa passar o caminho deste arquivo como um parâmetro de configuração como veremos a seguir. Você pode ou copiar este arquivo para o seu servidor Jenkins, ou usar a maneira mais elegante qu e vou ensinar agora.
O Jenkins possui uma funcionalidade para armazenar arquivos de forma segura e encriptada, para isso vá em
Jenkins >> Credentials >> Global Domain >> add Credentials
No tipo de credencial escolha Secret File, escolha o arquivo e informe a identificação da chave, este ID será usado mais tarde na pipeline.
Depois de criado deve parecer com algo assim:
Pipeline
Para rodar esta pipeline, eu estou usando o plugin Docker Pipeline, lembrando que este é apenas um modelo e você pode e deve adaptar para a sua realidade.
pipeline {
agent {
docker {
image 'akamai/purge:latest'
}
}
stages {
stage('Purge rafaelmarconi.com.br CDN Cache') {
steps {
sh "akamai purge --edgerc ${edgerc} invalidate https://rafaelmarconi.com.br/"
}
}
}
environment {
edgerc = credentials('edgerc')
}
}