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')
  }
}