SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Maior Sucesso, Menor Risco:
Ferramentas Open Source para
Desenvolvimento de Software
Bruno Souza
bruno@javaman.com.br
@brjavaman
●
Vinicius Senger
vinicius@globalcode.com.br
@vsenger
Programador, Fundador da Globalcode
• Bruno Souza
bruno@javaman.com.br
@brjavaman - http://java.mn
Programador, Fundador da ToolsCloud
Palestrantes
Mini Curso ALM Open Source Globalcode
● Esse material é baseado no mini-curso MC-122,
Introdução a ALM Open Source
● http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm-
open-source
● Esse é um minicurso gratuito de 3 horas, ministrado pela
Globalcode e pela ToolsCloud mensalmente
● A Globalcode também ministra um curso completo de ALM
Open Source online, o curso AA1 Online:
● http://www.globalcode.com.br/treinamentos/online/alm-testes
• Application Lifecycle Management: gerenciamento
contínuo do software;
• Casamento da gestão de negócio com engenharia de
software;
• Requer ferramentas integradas para gerenciar:
Requisitos;
Repositório de código;
Construção integrada;
Arquitetura e codificação;
Testes e qualidade;
Gerenciamento de versões e componentes;
A.L.M.
A.L.M.
• Independente de metodologia, arquitetura e tecnologia,
todos os times de desenvolvimento precisam de A.L.M.
• Não documentar o futuro (Agile / Scrum) é uma coisa,
poder rastrear o passado é outra;
• ALM = é como álbum de fotografia do seu software,
com retratos tirados automaticamente a cada
mudança, falha, novo requisito, novo release, etc.
• Todo mundo sai ganhando: bom para o developer,
gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO,
Asponi, etc.
• Vantagens na adoção:
• Rastreabilidade e dados post-hoc;
• Cultura de planejamento de releases / backlog;
• Gerenciamento integrado;
• Simplificação nos processos;
• Agilidade na construção do software;
• Conseqüente aumento na cultura de testes;
• Aumento da reusabilidade;
A.L.M. - vantagens
• Expõe os ciclos de vida do software, facilitando e
motivando sua a gestão:
• Requisitos / Backlog / Atividade / User Story
• Documentação (wiki / files) e suporte (fórum)
• Versionamento, tags, brunches, ..
• Gestão de Componentes e repositórios
• Arquétipos Maven
• Construção
• Testes – Homologação - Produção
• Deployment
Gestão de Arquitetura
Pilha A.L.M. Open Source
Disciplina Software
Gerenciamento de Requisitos Redmine
Gestão de código / versionamento SVN e GIT
Construção e dependências Maven
Gerenciamento de arquétipos Maven
Integração Contínua Hudson / Jenkins
Repositório de componentes Nexus
Ferramenta para desenvolvimento ● Eclipse / NetBeans com
plugins
A.L.M. Novo projeto
RedMine SVN Hudson
Requisitos Codificação Build & Testes
Release
Nexus
HomologaçãoProdução
Bugs
e Melhorias
1
2 2 2
53 4
6
10
9 8
7
Deployment Contínuo
A.L.M.
1. Gestão de componentes 3os com Nexus
2. Testes
3. Integração contínua
A.L.M. em uma semana
1. Testes regressivos
2. Deployment contínuo básico
3. Gestão dos seus próprios componentes com Nexus
A.L.M. em um mês
1. Testes avançados
2. Deployment contínuo avançado
3. Code review contínuo
Depois
• Gerenciamento de Requisitos com:
• Gestão de pendências;
• Gerenciamento de horas gastas / time tracking;
• Integração com SCM;
• Conceito de projetos e sub-projetos;
• Fórum, wiki, arquivos, news, calendário, gantt chart
e sistema de segurança;
• Software open-source construído em Ruby on Rails;
• Centenas de plug-ins e módulos adicionais;
• Muitas possibilidades de customização;
Redmine
• Tela de login do Redmine:
Redmine
• Após login, temos dois principais itens: Projects, para
entrar em um projeto e Administration para config.
geral:
Redmine
Home
• Temos dezenas de opções de controladores de
versões de arquivos no mercado:
• Subversion / SVN
• CVS
• GIT
• Microsft Sourcesafe e TFS
• Borland Starteam
• Clearcase
Versionamento
• No mundo open-source os destaques são:
• CVS: sistema mais antigo e precário, porém, ainda
muito utilizado. Trabalha com protocolo proprietário;
• Subversion: evolução do CVS com
disponibilização via HTTP (além de protocolo
proprietário) e alta performance para
versionamento;
• GIT: mais moderno ainda, por se tratar de um
repositório distribuído. Tem muitas vantagens, mas
demanda mais conhecimento do usuário;
Versionamento
• “Qualidade” dos commits
• Cuidar bem das mensagens
• Independente de decisão, escolha entre SVN e GIT!
• GIT File System?
• Hooks & ALM
Versionamento
• Subversion é um repositório client / server, não
distribuído;
• É mantido pelo grupo Apache:
• subversion.apache.org
• Instalação e administração simples;
• Não requer conhecimentos avançados do usuário;
• Excelente performance para gerar versões / cópias;
• Pode disponibilizar dados por protocolo proprietário ou
por HTTP / HTTPS;
Introdução ao Subversion
Comandos básicos
• Adicionar um arquivo ou diretório*:
svn add <arquivo ou diretorio>
• Remover arquivo ou diretório*:
svn rm <arquivo ou diretorio>
• Mover arquivo ou diretório*:
svn mv <arquivo ou diretorio>
• Listar conteúdo do repositório:
svn ls <URL>
• Reverter alterações locais:
svn revert <arquivo>
• Convencionalmente trabalhamos com:
• trunk (troco): uma pasta que contém os arquivos de
desenvolvimento do projeto.
• branch (galho): são linhas concorrentes de desenvolvimento do
projeto independentes;
• tag (etiqueta): são versões releases efetivos de um projeto.
Estrutura de trabalho
Trunk1
Branch2Tag3
• Distribuído: no lugar de checkout você clona o
repositório
• Seus commits são locais, portanto você pode trabalhar
offline
• Verbos: add commit log diff status branch merge push
• Entre offline e online vários commits!
• GIT ou Subversion?
GIT
• O Redmine pode ser integrar com seu sistema de ;
• Para isso, clique nos Settings do Projeto e, em
seguida, escolha Repository:
Integração com Redmine
• Ao vincular o projeto a um repositório você terá algumas
integrações;
• Últimas mudanças e commits no item Activities
Integração com Redmine
• Navegar nos arquivos do SVN via Web clicando no
item Repository:
Integração com Redmine
• E o recurso mais útil é a possibilidade de você
referenciar as Issues nas mensagens de commit;
cd /home/almadmin/projetos-svn/projeto1/trunk
touch novo-arquivo.txt
svn commit –m “Correçao de problema de encoding da IssueID #2”
Integração com Redmine
• Você pode configurar as palavras que serão
detectadas nas mensagens de commit em:
Redmine –> Administration –> Settings ->
Repositories
Integração com Redmine
Configuramos as palavras de referência aqui
Fixing keywords podem mudar o status da Issue!
cd /home/almadmin/projetos-svn/projeto1/trunk
touch novo-arquivo.txt
svn commit –m “Correçao de problema closes #2”
Integração com Redmine
●
Apresentamos o Redmine com SCM integrado.
●
Desta forma podemos ter um time de
desenvolvimento compartilhando o mesmo servidor
SCM para desenvolver as Issues do projeto;
●
Será que isso é o suficiente para nossa necessidade?
●
Não... Mesmo com essas ferramentas, é possível que
os desenvolvedores commitem código não-
compilável.
Integração Continua
●
Hudson/Jenkins são servidores open-source de integração
continua
●
Um “Continous integration server / CI server” pode
desempenhar várias tarefas como:
●
Checkout de código-fonte;
●
Build e teste;
●
Publicação de resultados;
●
Comunicação com membros do time;
●
Na prática: um agendador de tarefas de construção de
softwares altamente customizável;
Introdução ao Hudson / Jenkins
• Fácil instalação e configuração;
• Interface é web based;
• Pode fazer builds distribuídos;
• Relatório de teste unitário;
• Notificação do estado dos builds;
• Notificação em caso de quebra;
Introdução ao Hudson / Jenkins
• Arquitetura extensível baseada em plugins com mais de
150 de plugins disponíveis;
• Por padrão vem com 4 plugins instalados:
• CVS
• SVN
• Maven
• SSH
Introdução ao Hudson / Jenkins
• O Hudson pode funcionar de três formas:
• Stand-alone: java –jar hudson.war
• JNLP: https://hudson.dev.java.net/hudson.jnlp
• JavaEE container: fazendo deploy do hudson.war
Glassfish, Jboss, Tomcat, Jetty, Winstone,
Websphere;
Instalação e inicialização
• Para acessar o Hudson abra um browser e digite a
seguinte URL: http://localhost:8080/hudson-2.0.0
Instalação e inicialização
Executores de builds. O
Hudson vem com 2
executores de builds por
padrão.
Configurações do Hudson
Membros do Hudson e
projetos
Relacionamento entre
projetos
Views customizadas
• Para fazer as configurações iniciais devemos clicar em
Manage Hudson
Configuração
• Em seguida Configure System teremos acesso as
principais configurações do Hudson:
Configuração
Representa o no. de
executores de builds.
• Após a instalação é importante configurar o local
onde estão instalados JDK, Maven e Ant (se usar);
Configuração
• A outra configuração importante é uma conta de e-mail
funcionando para o Hudson poder se comunicar com
equipes:
Configuração
Criando Jobs
• Basicamente o Hudson
pode trabalhar com
projetos livres ou Maven;
• Maior parte dos casos
utilizamos Maven ou Ant;
• Maven é o mais simples
de se usar!
Criando Jobs
•Em seguida configuramos o
job indicando principalmente
o repositório para checkout
do projeto!
Criando Jobs
Podemos clicar em Build
Now e Hudson vai iniciar o
checkout do código e
depois vai disparar o build
Maven!
• O dashboard traz as informações sobre os diversos
jobs / projetos configurados;
• Este ícone indica a estabilidade dos builds:
Dashboard
• O Maven pode baixar automaticamente bibliotecas da
Internet (se open-source);
• Isso é excelente para o desenvolvimento de pequenos
times, agora se tivermos um time de 100
desenvolvedores criando projetos Maven que fazem
downloads da Internet?
• Fatalmente teremos um problema de rede até que
todos os Mavens terminem seus downloads!
Introdução Nexus
• Para ajudar a solucionar este tipo de problema contamos
com Gerenciadores de Repositórios, que
desempenham um papel de proxy para os demais:
Introdução Nexus
Developer Hudson
Build com
Maven
jar: log4j, hibernate, spring etc.
Nexus
Internet
• O Nexus faz o download centralizado dos
componentes fazendo um cache que ele utilizará para
servir aos demais desenvolvedores;
• Além do papel de cache, o Nexus também pode
catalogar o componentes e artefatos da sua empresa,
do seu negócio;
• Isso facilita bastante o reuso entre equipes;
• Maven + Nexus + Hudson: parceria perfeita!
Introdução ao Nexus
• Devemos adicionar esta configuração em um arquivo
settings.xml que ficará no diretório .m2 do usuário:
Configurando Maven
• Para que o Maven possa fazer deployment de
artefatos no Nexus:
Configurando Maven
Outras ferramentas
● Sonar – Análise de qualidade de software
● TestLink – Gerencia de Testes
● Vagrant – Automatização de servidor de desenvolvimento
● Chef – Automação de infraestrutura
● As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine
e Subversion formam uma poderosa solução de ALM;
● Todas as ferramentas são open-source;
● Este ambiente é agnóstico de linguagens, e funciona para
projetos Delphi, C, C++, Ruby, PHP e outros;
● Muitas possibilidades de customização;
● A ToolsCloud oferece este ambiente como serviço da
nuvem
Conclusões
● Pilha ALM como SaaS na nuvem
● Tudo isso que vimos, e mais:
● Ferramentas totalmente integradas
● Ambiente montado em minutos
● Não precisa de servidores na sua empresa!
● Softwares atualizados e suporte
● Experimente online as ferramentas desse mini-
curso:
● https://demo.toolscloud.com
● user: toolscloud senha: toolscloud
Obrigado!
● Vinicius Senger
vinicius@globalcode.com.br
@vsenger
www.globalcode.com.br
● Bruno Souza
bruno@javaman.com.br
@brjavaman
www.toolscloud.com
Obrigado!
Bruno Souza
bruno@javaman.com.br
@brjavaman

Weitere ähnliche Inhalte

Was ist angesagt?

Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de VersãoJonathas Silva
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Globalcode
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openrukoÉverton Ribeiro
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerNewton Angelini
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaPwC
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonRicardo Ferreira
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Marcus Carvalho
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018Graziella Bonizi
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoGuilherme Heynemann Bruzzi
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...tdc-globalcode
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainersSandro Giacomozzi
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 

Was ist angesagt? (19)

Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!Academia do Arquiteto - Implantando A.L.M. em uma semana!
Academia do Arquiteto - Implantando A.L.M. em uma semana!
 
The twelve factor apps and openruko
The twelve factor apps and openrukoThe twelve factor apps and openruko
The twelve factor apps and openruko
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Simtecce 2011 Integracao Continua
Simtecce 2011 Integracao ContinuaSimtecce 2011 Integracao Continua
Simtecce 2011 Integracao Continua
 
Macro Arquitetura de Software
Macro Arquitetura de SoftwareMacro Arquitetura de Software
Macro Arquitetura de Software
 
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & HudsonSuporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
Suporte a Open Source no Oracle WebLogic 12c - Integração com Maven & Hudson
 
Git
GitGit
Git
 
Apresentação controle de versão
Apresentação controle de versãoApresentação controle de versão
Apresentação controle de versão
 
Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)Maven Versioning Strategy (VR)
Maven Versioning Strategy (VR)
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do código
 
JavaME
JavaMEJavaME
JavaME
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainers
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 

Andere mochten auch

Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...especificacoes.com
 
[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de VersãoMarco Rosner
 
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaPaulo César M Jeveaux
 
Controle de Mudanças com GitHub
Controle de Mudanças com GitHubControle de Mudanças com GitHub
Controle de Mudanças com GitHubBruno Furtado
 
Introdução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de VersãoIntrodução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de VersãoFernando Machado
 
GCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos PrincipaisGCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos PrincipaisMisael Santos
 
GCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS ÁgilGCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS ÁgilMisael Santos
 
Apresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração PúblicaApresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração PúblicaMarco Rosner
 
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil
 
QConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestruturaQConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestruturaDiego Pacheco
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVNControle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVNFelipe Queiroz
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Diego Pacheco
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando gitfredmosc
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0Wilson Mendes
 
Mini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubMini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubWilson Mendes
 
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarGerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarIvanilton Polato
 

Andere mochten auch (20)

Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
Transformando a experiência dos times de DEV, OPS & BIZ nos Sistemas Financei...
 
[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão[Mini-curso] Sistema de Controle de Versão
[Mini-curso] Sistema de Controle de Versão
 
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataformaWine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
Wine.com.br - De zero a 300 milhões de faturamento na mesma plataforma
 
Controle de Mudanças com GitHub
Controle de Mudanças com GitHubControle de Mudanças com GitHub
Controle de Mudanças com GitHub
 
Introdução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de VersãoIntrodução ao Sistema de Controle de Versão
Introdução ao Sistema de Controle de Versão
 
GCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos PrincipaisGCS - Aula 02 - Conceitos Principais
GCS - Aula 02 - Conceitos Principais
 
GCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS ÁgilGCS - Aula 09 - GCS Ágil
GCS - Aula 09 - GCS Ágil
 
Controle de versão com GIT
Controle de versão com GITControle de versão com GIT
Controle de versão com GIT
 
Apresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração PúblicaApresentação do SAEO na Administração Pública
Apresentação do SAEO na Administração Pública
 
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version ControlJoomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
Joomla!Day Brasil 2008 - FláVio Kubota - Gsoc Version Control
 
QConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestruturaQConSP: Vivenciando dev ops para além da automação de infraestrutura
QConSP: Vivenciando dev ops para além da automação de infraestrutura
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVNControle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
Controle de Versão e Monitoramento de Projetos com SVN + WebSVN + StatSVN
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0
 
Android UI Fundamentals part 1
Android UI Fundamentals part 1Android UI Fundamentals part 1
Android UI Fundamentals part 1
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando git
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 
Mini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubMini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-github
 
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarGerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
 

Ähnlich wie Alm open source

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com HudsonLuis Reis
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Academia do Arquiteto - Introdução a ALM e Redmine
Academia do Arquiteto - Introdução a ALM e RedmineAcademia do Arquiteto - Introdução a ALM e Redmine
Academia do Arquiteto - Introdução a ALM e RedmineGlobalcode
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
 
Release Management for Visual Studio 2013
Release Management for Visual Studio 2013Release Management for Visual Studio 2013
Release Management for Visual Studio 2013André Dias
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...Amazon Web Services
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareAragon Vieira
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsCamila Carrera
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 

Ähnlich wie Alm open source (20)

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Integração Contínua com Hudson
Integração Contínua com HudsonIntegração Contínua com Hudson
Integração Contínua com Hudson
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Academia do Arquiteto - Introdução a ALM e Redmine
Academia do Arquiteto - Introdução a ALM e RedmineAcademia do Arquiteto - Introdução a ALM e Redmine
Academia do Arquiteto - Introdução a ALM e Redmine
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Release Management for Visual Studio 2013
Release Management for Visual Studio 2013Release Management for Visual Studio 2013
Release Management for Visual Studio 2013
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Projeto e Desenvolvimento de Software
Projeto e Desenvolvimento de SoftwareProjeto e Desenvolvimento de Software
Projeto e Desenvolvimento de Software
 
Construindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOpsConstruindo pipelines com Azure DevOps
Construindo pipelines com Azure DevOps
 
Maven 2
Maven 2Maven 2
Maven 2
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 

Alm open source

  • 1. Maior Sucesso, Menor Risco: Ferramentas Open Source para Desenvolvimento de Software Bruno Souza bruno@javaman.com.br @brjavaman
  • 2. ● Vinicius Senger vinicius@globalcode.com.br @vsenger Programador, Fundador da Globalcode • Bruno Souza bruno@javaman.com.br @brjavaman - http://java.mn Programador, Fundador da ToolsCloud Palestrantes
  • 3. Mini Curso ALM Open Source Globalcode ● Esse material é baseado no mini-curso MC-122, Introdução a ALM Open Source ● http://www.globalcode.com.br/gratuitos/minicursos/minicurso-introducao-a-alm- open-source ● Esse é um minicurso gratuito de 3 horas, ministrado pela Globalcode e pela ToolsCloud mensalmente ● A Globalcode também ministra um curso completo de ALM Open Source online, o curso AA1 Online: ● http://www.globalcode.com.br/treinamentos/online/alm-testes
  • 4. • Application Lifecycle Management: gerenciamento contínuo do software; • Casamento da gestão de negócio com engenharia de software; • Requer ferramentas integradas para gerenciar: Requisitos; Repositório de código; Construção integrada; Arquitetura e codificação; Testes e qualidade; Gerenciamento de versões e componentes; A.L.M.
  • 5. A.L.M. • Independente de metodologia, arquitetura e tecnologia, todos os times de desenvolvimento precisam de A.L.M. • Não documentar o futuro (Agile / Scrum) é uma coisa, poder rastrear o passado é outra; • ALM = é como álbum de fotografia do seu software, com retratos tirados automaticamente a cada mudança, falha, novo requisito, novo release, etc. • Todo mundo sai ganhando: bom para o developer, gerente, arquiteto, Scrum Master, P.O., V.P., CIO, CTO, Asponi, etc.
  • 6. • Vantagens na adoção: • Rastreabilidade e dados post-hoc; • Cultura de planejamento de releases / backlog; • Gerenciamento integrado; • Simplificação nos processos; • Agilidade na construção do software; • Conseqüente aumento na cultura de testes; • Aumento da reusabilidade; A.L.M. - vantagens
  • 7. • Expõe os ciclos de vida do software, facilitando e motivando sua a gestão: • Requisitos / Backlog / Atividade / User Story • Documentação (wiki / files) e suporte (fórum) • Versionamento, tags, brunches, .. • Gestão de Componentes e repositórios • Arquétipos Maven • Construção • Testes – Homologação - Produção • Deployment Gestão de Arquitetura
  • 8. Pilha A.L.M. Open Source Disciplina Software Gerenciamento de Requisitos Redmine Gestão de código / versionamento SVN e GIT Construção e dependências Maven Gerenciamento de arquétipos Maven Integração Contínua Hudson / Jenkins Repositório de componentes Nexus Ferramenta para desenvolvimento ● Eclipse / NetBeans com plugins
  • 9. A.L.M. Novo projeto RedMine SVN Hudson Requisitos Codificação Build & Testes Release Nexus HomologaçãoProdução Bugs e Melhorias 1 2 2 2 53 4 6 10 9 8 7 Deployment Contínuo
  • 11. 1. Gestão de componentes 3os com Nexus 2. Testes 3. Integração contínua A.L.M. em uma semana
  • 12. 1. Testes regressivos 2. Deployment contínuo básico 3. Gestão dos seus próprios componentes com Nexus A.L.M. em um mês
  • 13. 1. Testes avançados 2. Deployment contínuo avançado 3. Code review contínuo Depois
  • 14. • Gerenciamento de Requisitos com: • Gestão de pendências; • Gerenciamento de horas gastas / time tracking; • Integração com SCM; • Conceito de projetos e sub-projetos; • Fórum, wiki, arquivos, news, calendário, gantt chart e sistema de segurança; • Software open-source construído em Ruby on Rails; • Centenas de plug-ins e módulos adicionais; • Muitas possibilidades de customização; Redmine
  • 15. • Tela de login do Redmine: Redmine
  • 16. • Após login, temos dois principais itens: Projects, para entrar em um projeto e Administration para config. geral: Redmine Home
  • 17. • Temos dezenas de opções de controladores de versões de arquivos no mercado: • Subversion / SVN • CVS • GIT • Microsft Sourcesafe e TFS • Borland Starteam • Clearcase Versionamento
  • 18. • No mundo open-source os destaques são: • CVS: sistema mais antigo e precário, porém, ainda muito utilizado. Trabalha com protocolo proprietário; • Subversion: evolução do CVS com disponibilização via HTTP (além de protocolo proprietário) e alta performance para versionamento; • GIT: mais moderno ainda, por se tratar de um repositório distribuído. Tem muitas vantagens, mas demanda mais conhecimento do usuário; Versionamento
  • 19. • “Qualidade” dos commits • Cuidar bem das mensagens • Independente de decisão, escolha entre SVN e GIT! • GIT File System? • Hooks & ALM Versionamento
  • 20. • Subversion é um repositório client / server, não distribuído; • É mantido pelo grupo Apache: • subversion.apache.org • Instalação e administração simples; • Não requer conhecimentos avançados do usuário; • Excelente performance para gerar versões / cópias; • Pode disponibilizar dados por protocolo proprietário ou por HTTP / HTTPS; Introdução ao Subversion
  • 21. Comandos básicos • Adicionar um arquivo ou diretório*: svn add <arquivo ou diretorio> • Remover arquivo ou diretório*: svn rm <arquivo ou diretorio> • Mover arquivo ou diretório*: svn mv <arquivo ou diretorio> • Listar conteúdo do repositório: svn ls <URL> • Reverter alterações locais: svn revert <arquivo>
  • 22. • Convencionalmente trabalhamos com: • trunk (troco): uma pasta que contém os arquivos de desenvolvimento do projeto. • branch (galho): são linhas concorrentes de desenvolvimento do projeto independentes; • tag (etiqueta): são versões releases efetivos de um projeto. Estrutura de trabalho Trunk1 Branch2Tag3
  • 23. • Distribuído: no lugar de checkout você clona o repositório • Seus commits são locais, portanto você pode trabalhar offline • Verbos: add commit log diff status branch merge push • Entre offline e online vários commits! • GIT ou Subversion? GIT
  • 24. • O Redmine pode ser integrar com seu sistema de ; • Para isso, clique nos Settings do Projeto e, em seguida, escolha Repository: Integração com Redmine
  • 25. • Ao vincular o projeto a um repositório você terá algumas integrações; • Últimas mudanças e commits no item Activities Integração com Redmine
  • 26. • Navegar nos arquivos do SVN via Web clicando no item Repository: Integração com Redmine
  • 27. • E o recurso mais útil é a possibilidade de você referenciar as Issues nas mensagens de commit; cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema de encoding da IssueID #2” Integração com Redmine
  • 28. • Você pode configurar as palavras que serão detectadas nas mensagens de commit em: Redmine –> Administration –> Settings -> Repositories Integração com Redmine Configuramos as palavras de referência aqui Fixing keywords podem mudar o status da Issue!
  • 29. cd /home/almadmin/projetos-svn/projeto1/trunk touch novo-arquivo.txt svn commit –m “Correçao de problema closes #2” Integração com Redmine
  • 30. ● Apresentamos o Redmine com SCM integrado. ● Desta forma podemos ter um time de desenvolvimento compartilhando o mesmo servidor SCM para desenvolver as Issues do projeto; ● Será que isso é o suficiente para nossa necessidade? ● Não... Mesmo com essas ferramentas, é possível que os desenvolvedores commitem código não- compilável. Integração Continua
  • 31. ● Hudson/Jenkins são servidores open-source de integração continua ● Um “Continous integration server / CI server” pode desempenhar várias tarefas como: ● Checkout de código-fonte; ● Build e teste; ● Publicação de resultados; ● Comunicação com membros do time; ● Na prática: um agendador de tarefas de construção de softwares altamente customizável; Introdução ao Hudson / Jenkins
  • 32. • Fácil instalação e configuração; • Interface é web based; • Pode fazer builds distribuídos; • Relatório de teste unitário; • Notificação do estado dos builds; • Notificação em caso de quebra; Introdução ao Hudson / Jenkins
  • 33. • Arquitetura extensível baseada em plugins com mais de 150 de plugins disponíveis; • Por padrão vem com 4 plugins instalados: • CVS • SVN • Maven • SSH Introdução ao Hudson / Jenkins
  • 34. • O Hudson pode funcionar de três formas: • Stand-alone: java –jar hudson.war • JNLP: https://hudson.dev.java.net/hudson.jnlp • JavaEE container: fazendo deploy do hudson.war Glassfish, Jboss, Tomcat, Jetty, Winstone, Websphere; Instalação e inicialização
  • 35. • Para acessar o Hudson abra um browser e digite a seguinte URL: http://localhost:8080/hudson-2.0.0 Instalação e inicialização Executores de builds. O Hudson vem com 2 executores de builds por padrão. Configurações do Hudson Membros do Hudson e projetos Relacionamento entre projetos Views customizadas
  • 36. • Para fazer as configurações iniciais devemos clicar em Manage Hudson Configuração
  • 37. • Em seguida Configure System teremos acesso as principais configurações do Hudson: Configuração Representa o no. de executores de builds.
  • 38. • Após a instalação é importante configurar o local onde estão instalados JDK, Maven e Ant (se usar); Configuração
  • 39. • A outra configuração importante é uma conta de e-mail funcionando para o Hudson poder se comunicar com equipes: Configuração
  • 40. Criando Jobs • Basicamente o Hudson pode trabalhar com projetos livres ou Maven; • Maior parte dos casos utilizamos Maven ou Ant; • Maven é o mais simples de se usar!
  • 41. Criando Jobs •Em seguida configuramos o job indicando principalmente o repositório para checkout do projeto!
  • 42. Criando Jobs Podemos clicar em Build Now e Hudson vai iniciar o checkout do código e depois vai disparar o build Maven!
  • 43. • O dashboard traz as informações sobre os diversos jobs / projetos configurados; • Este ícone indica a estabilidade dos builds: Dashboard
  • 44. • O Maven pode baixar automaticamente bibliotecas da Internet (se open-source); • Isso é excelente para o desenvolvimento de pequenos times, agora se tivermos um time de 100 desenvolvedores criando projetos Maven que fazem downloads da Internet? • Fatalmente teremos um problema de rede até que todos os Mavens terminem seus downloads! Introdução Nexus
  • 45. • Para ajudar a solucionar este tipo de problema contamos com Gerenciadores de Repositórios, que desempenham um papel de proxy para os demais: Introdução Nexus Developer Hudson Build com Maven jar: log4j, hibernate, spring etc. Nexus Internet
  • 46. • O Nexus faz o download centralizado dos componentes fazendo um cache que ele utilizará para servir aos demais desenvolvedores; • Além do papel de cache, o Nexus também pode catalogar o componentes e artefatos da sua empresa, do seu negócio; • Isso facilita bastante o reuso entre equipes; • Maven + Nexus + Hudson: parceria perfeita! Introdução ao Nexus
  • 47. • Devemos adicionar esta configuração em um arquivo settings.xml que ficará no diretório .m2 do usuário: Configurando Maven
  • 48. • Para que o Maven possa fazer deployment de artefatos no Nexus: Configurando Maven
  • 49. Outras ferramentas ● Sonar – Análise de qualidade de software ● TestLink – Gerencia de Testes ● Vagrant – Automatização de servidor de desenvolvimento ● Chef – Automação de infraestrutura
  • 50. ● As ferramentas Maven, Nexus, Hudson/Jenkins, Redmine e Subversion formam uma poderosa solução de ALM; ● Todas as ferramentas são open-source; ● Este ambiente é agnóstico de linguagens, e funciona para projetos Delphi, C, C++, Ruby, PHP e outros; ● Muitas possibilidades de customização; ● A ToolsCloud oferece este ambiente como serviço da nuvem Conclusões
  • 51. ● Pilha ALM como SaaS na nuvem ● Tudo isso que vimos, e mais: ● Ferramentas totalmente integradas ● Ambiente montado em minutos ● Não precisa de servidores na sua empresa! ● Softwares atualizados e suporte ● Experimente online as ferramentas desse mini- curso: ● https://demo.toolscloud.com ● user: toolscloud senha: toolscloud
  • 52. Obrigado! ● Vinicius Senger vinicius@globalcode.com.br @vsenger www.globalcode.com.br ● Bruno Souza bruno@javaman.com.br @brjavaman www.toolscloud.com