Escrevendo scripts Groovy para o Jenkins usando o Eclipse com auto complete

Groovy é uma linguagem dinâmica e simples de usar. Ele é baseada no Java (mas mais simples) e roda dentro da JVM. Assim, você consegue executar trechos de código dentro da sua JVM e modificar objetos em tempo de execução, sem nem precisar compilar seus scripts.

O Jenkins utiliza Groovy de diversas maneiras. Quando você escreve plug-ins, você pode usar Groovy tanto para o código quanto para a UI (a vantagem disso é que você pode depurar a tela, diferente do Jelly). Há também diversos plug-ins que permitem que você execute Groovy ou algum DSL com Groovy (como o Job DSL Plug-in). E há também o CLI do Jenkins, um cliente que permite que você execute diversos comandos no Jenkins, entre eles o groovysh, um shell para Groovy, e o groovy, que permite que você envie um script para o Jenkins executar no master.

Há um exemplo que vem com o Jenkins de um script groovy bem simples, que imprime todos os plug-ins instalados:

println(Jenkins.instance.pluginManager.plugins)

pluginManager é o responsável por gerenciar plug-ins no Jenkins, e é um membro da classe Jenkins. Você pode ver mais sobre esta classe lendo o Javadoc do projeto. Ou se você utilizar Eclipse (ou outro IDE) você pode utilizar auto complete e ir escrevendo seu código Groovy com auxílio do IDE :o).

No vídeo acima você aprenderá como configurar seu Eclipse. O segredo é criar um projeto Maven + Groovy (com o plug-in Groovy para Eclipse) e incluir uma dependência para o projeto do Jenkins no seu pom.xml. Assim o Eclipse, utilizando Maven e Groovy, consegue usar o auto complete no seu código. Você pode digitar o começo do nome de uma classe e apertar CTRL + TAB para o Eclipse mostrar as opções e auto completar, ou clicar F3 e ver o código-fonte no projeto Jenkins ou CTRL + T e ver a hierarquia (de onde herda, quem estende essa classe, etc).

Aproveite este começo de ano (já que alguns dizem que o ano começo depois do carnaval) e automatize aquelas tarefas chatas como verificar se todos os jobs estão usando time-out (com o Build Timeout Plug-in) ou para realizar migrações ou atualizações em plug-ins, jobs ou slaves.