You are on page 1of 10

capa_

Aumentando a produtividade na
administrao de
servidores Jenkins
Como fazer o essencial e o no to essencial com o Jen-
kins. Aprenda a configurar ambientes distribudos, criar
scripts para automatizar tarefas e integrar o Jenkins com
outras ferramentas como Puppet.

Jenkins um servidor de integrao contnua de cdigo livre que


utilizado por empresas de todos os portes. Com ele, os desenvol-
vedores organizam builds, testes e at realizam o empacotamen-
to e instalao das suas aplicaes e, com o tempo, se torna uma
ferramenta fundamental para os desenvolvedores. Mas conforme o
nmero de jobs e builds vai aumentando, sua fila de builds comea
a ficar cheia, e os desafios para administr-lo tambm aumentam.
Assim, neste artigo iremos apresentar como criar um ambiente dis-
tribudo para o Jenkins, automatizar diversas tarefas com Groovy e
plug-ins, alm de uma srie de boas prticas e dicas.

/ 16
Bruno P. Kinoshita | bruno@tupilabs.com
engenheiro de software formado no Mackenzie, scio de uma empresa de consultores independentes e um dos fundadores da
TupiLabs http://www.tupilabs.com. D palestras e escreve artigos no Brasil e no exterior, committer da Apache e membro ativo
de projetos de cdigo livre. No tempo livre, pratica escalada, slack line, surfa, corre e desenha.
Site pessoal http://www.kinoshita.eti.br e GitHub http://www.github.com/kinow.

C riar um job no Jenkins simples e intuitivo. Voc


tem diversas opes de plug-ins e pode construir
vrios tipos de projetos diferentes (mobile, web, ga-
tambm nos permite enviar um script para o Jenkins
executar no servidor principal (master).
Para executar os exemplos deste artigo, voc
mes, entre outros). Mas o que acontece quando voc pode acessar http://<jenkins>/script ou criar um
tem que criar 150 jobs de uma s vez? Ou quando script e usar o CLI para executar o script diretamente
voc precisa criar servidores escravos (slaves) de no Jenkins. Tente fazer os dois para praticar.
forma automatizada? Ou ainda quando voc precisa
mudar a configurao de um plug-in apenas em um Listando Plug-ins
tipo de slave? Esse pode ser considerado o hello world de
O Jenkins possui recursos como: Groovy; API ex- Groovy no Jenkins, porque ele o exemplo que vem
terna em JSON e XML; API de plug-ins; Integrao com o Jenkins. Se voc for at a pgina de execuo
com outros sistemas; alm de outros recursos que de scripts (http://<jenkins>/script) voc encontra
podem facilitar tarefas de manuteno, migraes e esse mesmo exemplo.
no gerenciamento do Jenkins e do seu ambiente de
integrao contnua. Listagem 1. Listando plug-ins com Groovy.
println(Jenkins.instance.pluginManager.plugins)
Automatizando o Jenkins com Groovy
Groovy uma linguagem dinmica e simples de
usar. Ela baseada no Java (mas mais simples) e roda Limpando a fila de builds
dentro da JVM. Assim, possvel executar trechos Voc pode encontrar vrios outros scripts Groo-
de cdigo dentro da sua JVM e modificar objetos em vy para o Jenkins na pgina de scripts do Scriptler
tempo de execuo, sem nem precisar compilar seus Plug-in. H um GoogleApp que guarda vrios scripts
scripts. que voc pode utilizar no seu servidor. Esse exemplo
O Jenkins utiliza Groovy de diversas maneiras. foi desenvolvido pelo Kohsuke Kawaguchi, criador
Quando escrevemos plug-ins, podemos usar Groovy do Jenkins, e est disponvel no GoogleApp.
tanto para o cdigo quanto para a UI. A vantagem
do Groovy que podemos depurar a tela, diferente Listagem 2. Limpando a fila de builds com Groovy.
do Jelly. import hudson.model.*;
H tambm diversos plug-ins que nos permite Hudson.instance.computers.each { c ->
executar o Groovy ou alguma DSL (domain specific c.executors.each { e ->
language) com Groovy, como o Job DSL Plug-in. E h e.interrupt();
tambm o CLI do Jenkins, um cliente que nos permi- }
te executar diversos comandos no Jenkins, entre eles }
o groovysh, um shell para Groovy, e o groovy, e que
Jenkins em ambientes distribudos
Quando voc instala o Jenkins e comea a execu-
tar seus builds, por padro ele roda apenas o master.
Ou seja, um servidor apenas concentrando todos os
builds. E esse servidor comea sempre com dois exe-
Groovy com Auto Complete no Eclipse
Com os plug-ins do Maven e do Groovy pra Eclipse, cutores. Os executores so responsveis por, como o
mais algumas configuraes customizadas, podemos nome diz, executar os builds.
escrever scripts Groovy com auto complete no Eclipse. Conforme o nmero de builds cresce, a fila do
Para saber mais, acesse esse post www.tupilabs.com/ Jenkins cresce tambm e os executores no do
pt-br/escrevendo-scripts-groovy-para-o-jenkins- conta de executar todos os builds. Assim voc acaba
usando-o-eclipse-com-auto-complete/ e veja o vdeo tendo que aumentar o nmero de executores. O pro-
tutorial. blema que no adianta voc colocar 10 executores
em uma mquina com duas cores (ou mesmo quatro

17 \
master e slaves. O master sendo responsvel pela
Scale out VS. Scale up aplicao Web e por coordenar a execuo de builds
O Jenkins scale out melhor que scale up. Isso (bem como plug-ins e build steps) tanto no master
quer dizer que no modelo de sistema distribudo como nos slaves.
do Jenkins, melhor voc criar vrios slaves,
mesmo em mquinas simples, do que voc
tentar criar um master em um supercomputador.
Criando um Slave simples
H diversas formas de adicionar slaves no Jenkins.
Neste vdeo o criador do Jenkins, Kohsuke Kawaguchi,
Voc pode criar um slave simples (chamado tambm
fala mais sobre o modelo distribudo do Jenkins alm
de dumb slave) que controlado pelo master; criar
de sobre outros tpicos de integrao contnua e
um slave na nuvem com os plug-ins JClouds ou EC2;
Jenkins, http://www.infoq.com/presentations/Whats-
Next-in-Continuous-Integration usar o Swarm Plug-in para auto-provisionamento de
slaves ou at inventar um novo mecanismo especfico
para a configurao do seu projeto.
Vamos mostrar como criar um slave simples. Nos-
so master um Linux e vamos criar um slave Windo-
cores). A fila de builds continua com builds concor-
ws que pode executar builds de aplicaes nativas ou
rendo pelos executores.
realizar testes com o IE.
A soluo montar um ambiente distribudo com
O primeiro passo (figura 1) acessar a pgina de
configurao do Jenkins (http://<jenkins>/manage),
e procurar pela opo para gerenciar slaves (Manage
Nodes).
Na pgina de gerenciamento de slaves (figura 2)
voc vai encontrar o master sendo listado com suas
configuraes. Procure por um link na sua esquerda
para adicionar novo slave (New Node).
Digite um nome para o novo slave e selecione
Dumb Slave (figura 3).
Em seguida voc ser apresentado com um for-
mulrio para inserir mais parmetros do slave (figura
4). Voc ainda pode alterar o nome do slave e adicio-
nar uma descrio. Mas os parmetros mais impor-
tantes so nmero de executores, o file system remo-
to e os labels.
Por padro, utilizamos dois executores, mas de-
Figura 1. Pgina de gerenciamento do Jenkins. pendendo do nmero de cores disponveis, este n-

Figura 2. Pgina de gerenciamento de slaves.

Figura 3. Criando um novo slave.

/ 18
mero pode ser aumentado. O file system remoto o
diretrio onde o slave armazena arquivos serializa-
dos do master ou criados durante um build. Por fim,
os labels so usados para a execuo de builds, como
veremos mais adiante.
Quando voc salvar a listagem de ns (nodes)
haver um novo, alm do master (figura 5). Porm o
cone do seu slave ter uma marca em vermelho, in-
dicando que est offline. Voc pode conferir o status
dos slaves abaixo da fila de builds tambm.
Se voc tiver selecionado para iniciar o sla-
ve pelo Java Web Start, basta executar javaws
http://<jenkins>/computer/slave01/slave-agent.jnlp
(ou baixar o arquivo JNLP e execut-lo da mesma for-
Figura 6. Slave conectado no Windows.
ma). Se o slave for iniciado com sucesso, voc ver
uma janela como a da figura 6.
E quando voltarmos para a tela de listagem de

Figura 4. Preenchendo parmetros do slave.

Figura 5. Novo slave criado, mas no inicializado.

Figura 7. Slave conectado.

19 \
Figura 8. Criando um job que utilize o slave.

Utilizando Jenkins com Puppet


Puppet uma ferramenta de automatizao que
nos permite gerenciar a infraestrutura. Podemos
utilizar diversos mdulos existentes ou criar novos
Figura 9. Mostrando que o job foi executado remotamente. mdulos para substituir tarefas repetitivas. Uma das
vantagens de utilizar ferramentas como o Puppet
ns, veremos que o cone do seu slave no tem mais a (e.g.: Chef) que podemos criar scripts simples, cha-
marca de offline e j possui as configuraes do slave mados manifestos, que contm informaes sobre
sendo listadas tambm (figura 7). seu ambiente. Como estes arquivos so texto simples,
Por padro o Jenkins direciona os builds para sla- podemos version-los com Subversion, Git ou qual-
ves. Porm jobs que foram criados antes de slaves so quer outro SCM da sua preferncia.
executados no master, para evitar erros de build caso O puppet tem um dashboard que mostra detalhes
o slave no esteja preparado para o build da aplica- do seu ambiente, alm do facter que rene informa-
es sobre a configurao da mquina e outros re-
o.
cursos teis. O seu agente pode ser configurado para
Para testar seu novo slave, basta criar um novo
rodar periodicamente ou para ser executado somente
job (figura 8). Ele j ser executado no slave ou pode-
sob demanda, num formato batch.
mos tambm utilizar labels para restringir onde o job
Alm disso, podemos combinar o Jenkins e o Pu-
deve ser executado. uma boa prtica utilizar labels,
ppet de diferentes maneiras. Como criar uma confi-
e ainda pode ser combinada com jobs multi-configu-
gurao no Puppet para o master e slaves, incluindo
rao (aka Matrix Jobs).
verso do Jenkins e plug-ins, bem como JVM, Maven,
Para saber onde o job executou (figura 9), pode-
Ant e outras ferramentas e servios necessrios. As-
mos ver o console do Jenkins ou escrever um script
sim possvel gerenciar instalaes grandes com di-
Groovy que diga onde o job foi executado.
versos tipos de slaves com diferentes requerimentos.
Podemos ainda utilizar o Puppet a partir do
Outras maneiras de executar tarefas Jenkins, para levantar Virtual Machines e realizar de-
complexas ploy. Esse tipo de setup comum quando se usa Con-
H outros plug-ins para distribuir a execuo dos tinuous Delivery. Nas Listagens 3 e 4 temos exemplos
seus jobs no Jenkins, como o Amazon EC2 Plug-in e o de manifestos para um master e outro para os slaves
PBS Plug-in. Com o Amazon EC2 Plug-in, novos sla- do Jenkins.
ves so criados automaticamente em uma nuvem na
Amazon quando o seu servidor fica sobrecarregado. Listagem 3. Manifesto Puppet para um master do
Enquanto o PBS Plug-in nos permite executar e mo- Jenkins.
nitorar jobs de um cluster PBS (comum em workflows
class jenkins {
de bioinformtica). Porm para a maioria dos casos o yumrepo {jenkins:
uso de slaves suficiente para distribuir o trabalho
no Jenkins.
/ 20
file {
/home/jenkins :
ensure => directory,
baseurl => http://pkg.jenkins-ci.org/redhat, require => User[jenkins],
descr => Jenkins, owner => jenkins,
enabled => 1, group => jenkins;
gpgcheck => 1, /home/jenkins/.ssh :
gpgkey => http://pkg.jenkins-ci.org/redhat/jenkins-ci. ensure => directory,
org.key, require => File[/home/jenkins],
} owner => jenkins,
package {jenkins: group => jenkins;
ensure => latest, }
require => Yumrepo[jenkins] ssh_authorized_key {
} jenkins :
} user => jenkins,
class git { ensure => present,
yumrepo {epel: require => File[/home/jenkins/.ssh],
baseurl => http://mirror.aarnet.edu.au/pub/epel/5/ key => <KEY>,
i386, type => rsa,
descr => Extra Packages for Enterprise Linux (EPEL), name => jenkins@company;
enabled => 1, }
gpgcheck => 1, }
gpgkey => http://keys.gnupg.net:11371/pks/lookup?se
arch=0x217521F6&op=get, Assim, podemos copiar o contedo dos manifestos em um
} arquivo e executar puppet apply <arquivo> -v para instalar
package {git: Java, Jenkins e o Git. Este manifesto foi codificado para
ensure => latest, um servidor Red Hat. Normalmente realizamos algumas
require => Yumrepo[epel] verificaes no manifesto para ter certeza que ele funcionar
} com diferentes plataformas. O que esse manifesto faz
} instalar o Git, o Java e o Jenkins. Para isso ele utiliza o
class java { repositrio YUM do Jenkins, e h uma dependncia entre
package {java-1.6.0-openjdk: o Jenkins e o Java (j que precisamos de Java para rodar o
ensure => latest Jenkins).
} O manifesto da Listagem 4 foi parcialmente co-
} piado do repositrio infra-puppet do Jenkins. Con-
include jenkins sulte nas referncias bibliogrficas para encontrar o
include git link para mais scripts Puppet utilizados no projeto.
include java Com isto, podemos adaptar vrios desses scripts ao
Listagem 4. Manifesto para slaves do Jenkins. ambiente da sua empresa e automatizar a instalao
class ci-ssh-slave { do Jenkins e slaves.
include packages::subversion
include packages::vncserver # for Xvnc support
group { Plug-ins essenciais (e os no to
jenkins : essenciais tambm)
ensure => present; H mais de 600 plug-ins no Jenkins hoje e, s
}
vezes, podemos ficar tentado instalar diversos plug-
user {
jenkins : -ins. Porm essa uma das causas mais frequentes de
gid => jenkins, indisponibilidade do Jenkins. Verses mais novas dos
ensure => present, plug-ins podem quebrar compatibilidade com ver-
ses antigas, causando erros ao carregar informaes
do disco.
O Jenkins no utiliza banco de dados para suas
configuraes. Ele guarda tudo em XMLs no disco
usando o XStream. Quando instalamos plug-ins, al-
shell => /bin/bash, guns deles incluem dados nestes XMLs. Se o desen-
home => /home/jenkins, volvedor do plug-in no tiver cuidado, possvel que
require => Group[jenkins]; ele quebre sua instncia do Jenkins inserindo in-
} formaes que o Jenkins no consegue carregar nos
XMLs.
Nas pginas dos plug-ins no Wiki do Jenkins

21 \
possvel ver o nmero de downloads de cada plug-in. 4. Continuous Integration Game - Plug-in que
Prefira plug-ins mais antigos e com o nmero de do- atribui pontos para os membros do time de de-
wnloads alto. Acompanhe tambm os bugs do plug-in senvolvimento conforme eles vo evoluindo os
para ver se no h nenhum grave. Com o tempo pas- seus builds.
saremos a ter uma lista de plug-ins favoritos e saber
at a verso que funciona melhor com certa verso Desenvolvendo Plug-ins
do Jenkins. Por padro, o Jenkins vem com alguns plug-ins
Abaixo h uma lista de plug-ins que podem ser embutidos, como o Maven Plug-in que fornece os
teis nos seus servidores Jenkins, independentemen- templates de projetos para Maven, e o Subversion
te de linguagem de programao ou do tipo do pro- Plug-in que nos permite fazer check out de projetos
jeto. de servidores Subversion no Jenkins.
1. Email-ext Permite anexar logs ou utilizar um H mais de 600 plug-ins hoje para o Jenkins, e
template para o corpo da mensagem quando todo ms h plug-ins novos sendo criados e lana-
notificar usurios de status de builds. dos no update site oficial do projeto. Porm h casos
2. Build Timeout Habilita um timeout (fixo ou dentro de empresas que um build de certo projeto
elstico) nos builds. Assim no ficamos com pode precisar de um plug-in tambm, mas que no
builds prendendo sua fila por horas. faa sentido publicar este plug-in para a comunidade
3. JobConfig History Esse plug-in versiona a toda.
configurao dos seus jobs. Assim conseguimos A maneira mais fcil de desenvolver plug-ins
auditar alteraes na configurao dos seus seguindo o tutorial de plug-ins, do Wiki do Jenkins,
jobs e at voltar verses. e usando plug-ins existentes como base. Por exem-
4. Console Column Adiciona um cone para o plo, se quisermos que um plug-in rode um executvel
ltimo console na tabela de jobs. Muito til do Windows e gere algumas pginas customizadas
quando precisamos abrir o console do ltimo no Jenkins, podemos usar o MSBuild Plug-in como
build do seu projeto rapidamente. exemplo.
5. Extended Read Permission Permite mostrar Podemos escrever plug-ins em Java ou Ruby, po-
a configurao dos seus jobs mesmo sem estar rm nem todos os recursos do projeto esto dispon-
logado, em modo de apenas leitura. veis em Ruby ainda. Em Java, podemos utilizar tanto
Mas h tambm plug-ins no to essenciais, mas Maven quanto Gradle (maioria dos projetos utiliza
que so divertidos ou modificam de maneira simples Maven). E possvel utilizar Eclipse, Netbeans, In-
o Jenkins. telliJ ou o editor da sua preferncia.
1. Chuck Norris Plug-in - Insere o famoso Chuck A parte Web do projeto utiliza o framework Sta-
Norris nos builds, parabenizando quando ocor- pler para MVC e REST, enquanto plug-ins utilizam
rer um sucesso e se preparando para um roun- Jelly, HTML e Groovy para escrever as telas que so
dhouse kick quando o build est quebrado. apresentadas aos usurios.
2. Green Balls Plug-in Mostra cones verdes ao
invs de cones azuis para builds com sucesso.
3. Beer Plug-in Quando precisamos realizar
Actions
Actions so objetos que respondem certas URLs.
qualquer outra tarefa longe do computador,
Quando criamos um plug-in normal a necessidade
enquanto estamos monitorando nosso builds.
de mostrarmos grficos ou criar novas pginas. Nor-
malmente utilizamos Actions que respondem a uma
determinada URL, organizando objetos e usando Jelly
ou Groovy para mostrar o contedo para o usurio.
A action abaixo do Job DSL Plug-in. Quando o
plug-in cria um novo Job usando uma DSL, ele adi-
Lista de plug-ins essenciais por Andrew Bayer ciona essa action ao build. Essa Action possui um ar-
Andrew Bayer um dos membros mais antigos do quivo summary.groovy. Quando abrimos a pgina do
projeto. Trabalha na Cloudera, empresa que contribui build, o plug-in adiciona informaes sobre os jobs
com o Apache Hadoop, um Apache Committer e est criados ao sumrio do build.
sempre no canal do #jenkins na Freenode com o nick
@abayer. Ele fez uma tima seleo de plug-ins que Listagem 5. Build Action do Job DSL Plug-in.
pode ser conferida em uma apresentao com o ttulo
7 hbitos de usurios Jenkins altamente eficazes package javaposse.jobdsl.plugin;
http://www.slideshare.net/andrewbayer/7-habits-of-
highly-effective-jenkins-users import com.google.common.collect.Sets;

/ 22
Vdeo-tutoriais sobre desenvolvimento de plug- public Collection<GeneratedJob> getModifiedJobs() {
ins para o Jenkins return modifiedJobs;
Confira os vdeos tutoriais disponveis no Youtube }
em portugus http://www.youtube.com/tupilabs. Eles
seguem o mesmo script do tutorial de plug-ins do }
Jenkins, usando Java, Maven e Eclipse.

Listagem 6. Groovy da Build Action.

import hudson.model.Action;
import javaposse.jobdsl.dsl.GeneratedJob;
package javaposse.jobdsl.plugin.
import java.util.Collection;
GeneratedJobsBuildAction;
import java.util.Set;
import lib.LayoutTagLib
class GeneratedJobsBuildAction implements Action {
l=namespace(LayoutTagLib)
public final Set<GeneratedJob> modifiedJobs;
t=namespace(/lib/hudson)
st=namespace(jelly:stapler)
public GeneratedJobsBuildAction(
f=namespace(lib/form)
Collection<GeneratedJob> modifiedJobs) {
if (my?.modifiedJobs != null) {
this.modifiedJobs = Sets.newHashSet(modifiedJobs);
t.summary(icon:folder.png) {
}
raw(Generated Jobs:)
ul(class:jobList) {
/**
my.getModifiedJobs().each { af ->
* No task list item.
li() {
*/
a(href:${rootURL}/job/${af.jobName}/,
public String getIconFileName() {
class:model-link tl-tr) { raw(af.jobName) }
return null;
}
}
}
public String getDisplayName() {
}
return Generated Jobs;
}
}
}
public String getUrlName() {
return generatedJobs;
}

Figura 10. Build Action em ao.

23 \
Padro Describable/Descriptor global.jelly cria um novo DescriptorImpl, com con-
No Jenkins quando escrevemos plug-ins, utili- figuraes globais que podem ser acessadas por ins-
zamos sempre Extension Points. Existem diversos tncias do GitSCM.
Extension Points, como o SCM para Source Code
Management, utilizado pelos plug-ins Bazaar, Git e Como obter ajuda e onde aprender mais
Subversion. Tambm possvel criar novos Extension Participar do desenvolvimento do Jenkins mui-
Points para o seu plug-in. Uma atividade rotineira
to fcil, mesmo que voc no programe Java. H bin-
quando desenvolvemos plug-ins a criao de for-
dings para Ruby, bem como um trabalho que ainda
mulrios usados para preencher objetos Java. H um
padro na API de plug-ins do Jenkins onde criamos no ficou pronto de bindings para Python. Tambm
um Descriptor que funciona como uma Factory para h testes Selenium e sempre so necessrios testes
novos objetos (describables). O Descriptor exposto antes de uma release LTS (Long Term Support). Mas
por uma pgina de configuraes (global ou de job). se voc programa em Java, voc pode contribuir (ou
se tornar o mantenedor) com plug-ins ou mesmo com
Listagem 7. Extension Point SCM usado no Git Plug- o core.
-in.
No Wiki do Jenkins tambm encontramos muitas
informaes teis, assim como no site da CloudBe-
es. Os desenvolvedores e alguns usurios conversam
public class GitSCM extends SCM
implements Serializable { no canal IRC #jenkins da FreeNode, mas h tambm
// ... mailing lists para usurios e desenvolvedores.
@DataBoundConstructor Recentemente foi criada uma lista para eventos e
outra para segurana. Se voc tiver um evento, ou se
public GitSCM(String scmName, List
<UserRemoteConfig> userRemoteConfig, ...) { encontrar um bug crtico, consulte os links no final
this.scmName = scmName; deste artigo para enviar mensagens para a lista cor-
//... reta. H ainda uma lista de discusses em Portugus,
} criada aps o evento Jenkins Meetup So Paulo em
// ...
}
2012. Consulte as referncias bibliogrficas no final
deste artigo para o link.

Listagem 8. Descriptor do GitSCM. Consideraes finais


O Jenkins uma ferramenta extremamente ma-
@Extension
level, onde podemos inclusive re-empacotar e gerar
public static final class DescriptorImpl sua prpria distribuio, com outra cara e um con-
extends SCMDescriptor<GitSCM> { junto de plug-ins embutidos por padro. Como suas
configuraes ficam em XMLs no disco, bem fcil
realizar backups tambm.
private String gitExe;
private String globalConfigName; E com um conjunto de computadores possvel
private String globalConfigEmail; montar um ambiente distribudo que suporte diver-
private boolean createAccountBasedOnEmail; sos builds em paralelo. H diversos plug-ins para as
mais variadas atividades, desde envio de notificaes
public DescriptorImpl() {
super(GitSCM.class, GitRepositoryBrowser.class); para celulares ou Skype, at execuo de passos de
load(); construo (ou build steps) em clusters de alta dispo-
} nibilidade.
Com o conjunto correto de plug-ins e com a ado-
} o de boas prticas, possvel montar um ambiente
resiliente e independente de linguagem de progra-
mao para compilar e testar seus projetos. Este arti-
Na Listagem 7 a classe GitSCM estende SCM, um
extension point para SCMs. E na Listagem 8 temos go focou na administrao de servidores Jenkins, mas
o Descriptor do GitSCM. No cdigo-fonte do proje- voc pode se interessar por outros artigos sobre Con-
to, na pasta src/main/resources/hudson/plugin/git/ tinuous Integration, Continuous Delivery, Continuous
GitSCM/ h dois arquivos importantes: config.jelly e Deployment, Builds Pipeline e implantao (deploy) de
global.jelly. O config.jelly cria um novo GitSCM, e o aplicativos com o Jenkins.

/ 24
/referncias
> Jenkins CI http://www.jenkins-ci.org Plug - ins essenciais ( e os no to essenciais
tambm )
> Jenkins: The Definitive Guide John Fergusson Smart
> Jenkins E-mail-ext Plug-in - https://wiki.jenkins-ci.org/
> @jenkins-br Conta do Twitter brasileiro do Jenkins
display/JENKINS/Email-ext+plugin
> Lista de e-mails em portugus do Jenkins https://
> Jenkins Build Timeout Plug-in - https://wiki.jenkins-ci.org/
groups.google.com/forum/?fromgroups#!forum/jenkinsci-br
display/JENKINS/Build-timeout+Plugin
> Administering Jenkins https://wiki.jenkins-ci.org/
> Jenkins JobConfigHistory Plug-in - https://wiki.jenkins-ci.
display/JENKINS/Administering+Jenkins
org/display/JENKINS/JobConfigHistory+Plugin
Automatizando o Jenkins com Groovy
> Jenkins Column View Plug-in - https://wiki.jenkins-ci.org/
> Jenkins CLI https://wiki.jenkins-ci.org/display/ display/JENKINS/Console+Column+Plugin
JENKINS/Jenkins+CLI
> Jenkins Extended Read Permission Plug-in - https://wiki.
> Groovy Beginners Tutorial http://groovy.codehaus.org/ jenkins-ci.org/display/JENKINS/Extended+Read+Permissio
Beginners+Tutorial n+Plugin

> Jenkins Groovy Plug-in https://wiki.jenkins-ci.org/ > Jenkins ChuckNorris Plug-in - https://wiki.jenkins-ci.org/
display/JENKINS/Groovy+Plugin display/JENKINS/ChuckNorris+Plugin

> Jenkins Scriptler Plug-in https://wiki.jenkins-ci.org/ > Jenkins Green Balls Plug-in - https://wiki.jenkins-ci.org/
display/JENKINS/Scriptler+Plugin display/JENKINS/Green+Balls

> Scriptler Google App http://scriptlerweb.appspot.com/ > Jenkins Beer Plug-in - https://wiki.jenkins-ci.org/display/
JENKINS/Beer+Plugin
Jenkins em ambientes distribudos
> Jenkins Continuous Integration Game Plug-in - https://
> Distributed builds https://wiki.jenkins-ci.org/display/
wiki.jenkins-ci.org/display/JENKINS/The+Continuous+Integ
JENKINS/Distributed+builds
ration+Game+plugin
> Jenkins Amazon EC2 Plug-in https://wiki.jenkins-ci.
Desenvolvendo Plug - ins
org/display/JENKINS/Amazon+EC2+Plugin
> Tutorial de desenvolvimento de Plug-ins - https://wiki.
> BioUno PBS Plug-in https://github.com/tupilabs/pbs-
jenkins-ci.org/display/JENKINS/Plugin+tutorial
plugin
> Definindo um novo extension point - https://wiki.jenkins-
> Jenkins Swarm Plug-in https://wiki.jenkins-ci.org/
ci.org/display/JENKINS/Defining+a+new+extension+point
display/JENKINS/Swarm+Plugin
> Post no blog da CloudBees sobre Actions - http://blog.
Utilizando Jenkins com Puppet
cloudbees.com/2011/08/jenkins-internal-action-and-its.html
> PuppetLabs Puppet http://puppetlabs.com/
Padro Describable/Descriptor
> Puppet no Jenkins com Ubuntu https://wiki.jenkins-ci.
> Extension Points - https://wiki.jenkins-ci.org/display/
org/display/JENKINS/Puppet
JENKINS/Extension+points
> Mdulo puppet-jenkins https://github.com/rtyler/
> Jenkins Git Plug-in - https://wiki.jenkins-ci.org/display/
puppet-jenkins
JENKINS/Git+Plugin
> Post do rtyler sobre Jenkins e Puppet http://
Como obter ajuda e onde aprender mais
unethicalblogger.com/2011/12/28/jenkins-with-puppet.
html > Listas de e-mail do Jenkins - http://jenkins-ci.org/content/
mailing-lists
> Repositrio de manifestos e mdulos Puppet do Jenkins -
https://github.com/jenkinsci/infra-puppet > Plug-ins do Jenkins - https://wiki.jenkins-ci.org/display/
JENKINS/Plugins

> FreeNode http://www.freenode.net

25 \

You might also like