Posts tagged with groovy

Tupilabs Report: Jan 27, Feb 02

Feb 03, 2013 in biouno, cjan, functional-programming, groovy, jenkins, paskuale, reddit, tupilabs-report | news

Here’s the list of the cool things we did since last Sunday at TupiLabs.

We are working for you

Have a great week! :D

Querying a REST server from Groovy scripts in Jenkins

Feb 01, 2013 in groovy, jenkins | tutorials

This week, in a customer, I had to write a Groovy script to import some projects from an old installation. The SVN URL had changed. Not only the domain, but now the SVN structure was broken in modules (i.e. instead of /svn/… now there was /repo1/…, /repo2/…, etc).

The solution I found, was scan the SVN directory structure with Perl and produce a JSON file. Then I wrote a quick PHP application (with Slim) with an URL like /repo?projectName=XYZ, that returned the new repository URL.

Overly Manly meme

The last step was the hardest, since I needed to query the REST application. The script would get the current SVN address from the SVN SCM, query the REST URL to get the new URL, and lastly update the job with the new URL.

The solution I found was copy the necessary jars to jenkins lib/ folder, restart the server and execute my script. Then stop the server, remove the jars and check the new SVN URL’s. Here’s the list of jars I had to copy.

  • http-builder
  • nekohtml-1.9.9
  • xml-resolver-1.2
  • httpclient
  • httpcore
  • xercesImpl

If you have a Maven project with your REST client, you can get a list of dependencies with mvn dependency:copy-dependencies . Then copy the jars to Jenkins class path.

Tupilabs Report: Jan 20, Jan 26

Jan 30, 2013 in groovy, jenkins, tap4j, tupilabs-report | news

Here’s the list of the cool things we did since last Sunday at TupiLabs.

  • Finished writing an article to MundoJ magazine about Jenkins
  • Prepared for Groovy Scripts for Jenkins (we will publish them in tupilabs GitHub soon!)
  • Released tap4j 4.0.0!!! Yay!
  • Updated tap4j website and documentation

We are working for you

Have a great week! :D

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

Jan 17, 2013 in jenkins, eclipse, groovy | tutorials

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.