SAMBA
                   TECH



Processo de desenvolvimento
Processo de Desenvolvimento
na samba usando Git, GitHub,
   Jenkins e BluePill como
    ferramentas de apoio.
Processo de desenvolvimento
          no Sprint
Como era (é)?
A nova proposta...




Desenvolvimento usando
    feature branches
Por quê usar feature branches?




- Branches são “baratos”
- Separação do código das features
- Facilidade para QA garantir que a feature está funcionando
- Fácil gerenciamento da release
- ...
Como fica então?
E na prática, como funciona?
Como criar um branch?




•
    $ git checkout -b <feature-branch-name>
Como alternar entre branches?




$ git checkout <feature-branch-name>
•
Como fazer push das minhas modificações?




•
 $ git commit -a -m”minha nova feature”
•
 $ git push origin <feature-branch-name>
Merge ou Rebase?
•
    Depende...
O que o merge faz?


- Um novo commit é criado no HEAD do stack de
•


commits, marcando o momento em que duas cabeças
distintas foram transformadas em uma só.
Merge...




$ git pull origin master
$ git checkout <feature-branch-name>
$ git merge master
Vantagem do Merge




- Maior facilidade para entender quando uma cabeça foi
•


mesclada com outra.
O que o rebase faz?



•
  - Recorta o commit – o commit perde a referência do
parent.
•
  - Aplica todas as modificações com as quais você
está fazendo o rebase.
•
  - Cola suas modificações em cima desta nova base,
com novo SHA1 – ou seja, um novo commit.
O que o rebase faz?
Rebase...




•
  $ git checkout -b <feature-branch-name>
•
  ..hack.hack..
•
  $ git commit
•
  $ git rebase master
•
  $ git checkout master
•
  $ git merge <feature-branch-name>
Quando não usar o Rebase?

- Nunca, NUNCA use rebase em branches públicos.
Push




$ git push <feature-branch-name>
E como testar minha feature?




- Jenkins

- BluePill
Jenkins
BluePill
Release-Notes




•
 - Incremental durante o Sprint
•
 - Direto na interface do GitHub
Release-Notes




- Maiores informações na colméia:
•


http://colmeia.sambatech.com.br/display/comofas/Di
cas+Release-Notes
Como colocar meu código em produção?
•
    Pull-Request
Pull-Request – Revisão de Código
Pull-Request – Revisão de Código
Pull-Request – Revisão de Código




Observações:
- Commit no HEAD do branch em pull-request
faz o HEAD do pull-request andar também.
Quando testar?




Aberto para que a equipe escolha.

Mas dar preferência para integração
  na quarta-feira ou quinta-feira.
Processo de Hot Fix
Hot Fix

•
    Fork para a conta pessoal
Hot Fix




•
    Pull-Request para master de Desenvolvimento e
                 master de Produção.
Hot Fix
FAQ




•
    Qual a melhor forma de ir para uma revisão específica e
      depois retornar para a minha revisão (parece algo
           simples, mas já tive problema com isso)?
FAQ

    •
        Qual a melhor forma de ir para uma revisão específica e
          depois retornar para a minha revisão (parece algo
               simples, mas já tive problema com isso)?




•
 $ git branch branchname <sha1-of-commit>
•
 $ git branch branchname HEAD~3
FAQ

          O git é um sistema de versionamento distribuído.
                Qual a melhor forma de duas pessoas
                     trabalharem em uma feature
                  de forma independente da equipe?

O HG permite push e pull de um repositório que esteja
•


na máquina de um dos desenvolvedores por exemplo.
Mas acho que no GIT o mais indicado é criar um brach
 remoto neste caso (já li que existe um tipo específico
             de branch pra isso). Certo?
FAQ




•
    Como faço para ver o que foi mudado no meu branch
        remoto, sem atualizar meu branch atual?
FAQ

    •
        Como faço para ver o que foi mudado no meu branch
            remoto, sem atualizar meu branch atual?




•
    $ git fetch && git log ..origin/master --oneline
FAQ




Fiz pull, realizei um monte de modificações. Quero simplesmente "desistir" delas,
            voltar ao estado antes das modificações. Qual o comando?
FAQ

   Fiz pull, realizei um monte de modificações. Quero
simplesmente "desistir" delas, voltar ao estado antes das
              modificações. Qual o comando?

    Se estiver no working directory:
    $ git checkout -- <file>

    Se já tiver dado “add” (staging):
    $ git reset HEAD <file>

    Se já tiver commitado:
    $ git reflog
    $ git reset --hard HEAD@{1}
OBRIGADO!



João Maciel, DevOps - Samba Tech
  joao.maciel@sambatech.com.br

Processo de desenvolvimento na samba

  • 1.
    SAMBA TECH Processo de desenvolvimento
  • 2.
    Processo de Desenvolvimento nasamba usando Git, GitHub, Jenkins e BluePill como ferramentas de apoio.
  • 3.
  • 4.
  • 5.
    A nova proposta... Desenvolvimentousando feature branches
  • 6.
    Por quê usarfeature branches? - Branches são “baratos” - Separação do código das features - Facilidade para QA garantir que a feature está funcionando - Fácil gerenciamento da release - ...
  • 7.
  • 8.
    E na prática,como funciona?
  • 9.
    Como criar umbranch? • $ git checkout -b <feature-branch-name>
  • 10.
    Como alternar entrebranches? $ git checkout <feature-branch-name> •
  • 11.
    Como fazer pushdas minhas modificações? • $ git commit -a -m”minha nova feature” • $ git push origin <feature-branch-name>
  • 12.
  • 13.
    Depende...
  • 14.
    O que omerge faz? - Um novo commit é criado no HEAD do stack de • commits, marcando o momento em que duas cabeças distintas foram transformadas em uma só.
  • 15.
    Merge... $ git pullorigin master $ git checkout <feature-branch-name> $ git merge master
  • 16.
    Vantagem do Merge -Maior facilidade para entender quando uma cabeça foi • mesclada com outra.
  • 17.
    O que orebase faz? • - Recorta o commit – o commit perde a referência do parent. • - Aplica todas as modificações com as quais você está fazendo o rebase. • - Cola suas modificações em cima desta nova base, com novo SHA1 – ou seja, um novo commit.
  • 18.
    O que orebase faz?
  • 19.
    Rebase... • $git checkout -b <feature-branch-name> • ..hack.hack.. • $ git commit • $ git rebase master • $ git checkout master • $ git merge <feature-branch-name>
  • 20.
    Quando não usaro Rebase? - Nunca, NUNCA use rebase em branches públicos.
  • 21.
    Push $ git push<feature-branch-name>
  • 22.
    E como testarminha feature? - Jenkins - BluePill
  • 23.
  • 24.
  • 25.
    Release-Notes • - Incrementaldurante o Sprint • - Direto na interface do GitHub
  • 26.
    Release-Notes - Maiores informaçõesna colméia: • http://colmeia.sambatech.com.br/display/comofas/Di cas+Release-Notes
  • 27.
    Como colocar meucódigo em produção?
  • 28.
    Pull-Request
  • 29.
  • 30.
  • 31.
    Pull-Request – Revisãode Código Observações: - Commit no HEAD do branch em pull-request faz o HEAD do pull-request andar também.
  • 32.
    Quando testar? Aberto paraque a equipe escolha. Mas dar preferência para integração na quarta-feira ou quinta-feira.
  • 34.
  • 35.
    Hot Fix • Fork para a conta pessoal
  • 36.
    Hot Fix • Pull-Request para master de Desenvolvimento e master de Produção.
  • 37.
  • 38.
    FAQ • Qual a melhor forma de ir para uma revisão específica e depois retornar para a minha revisão (parece algo simples, mas já tive problema com isso)?
  • 39.
    FAQ • Qual a melhor forma de ir para uma revisão específica e depois retornar para a minha revisão (parece algo simples, mas já tive problema com isso)? • $ git branch branchname <sha1-of-commit> • $ git branch branchname HEAD~3
  • 40.
    FAQ O git é um sistema de versionamento distribuído. Qual a melhor forma de duas pessoas trabalharem em uma feature de forma independente da equipe? O HG permite push e pull de um repositório que esteja • na máquina de um dos desenvolvedores por exemplo. Mas acho que no GIT o mais indicado é criar um brach remoto neste caso (já li que existe um tipo específico de branch pra isso). Certo?
  • 41.
    FAQ • Como faço para ver o que foi mudado no meu branch remoto, sem atualizar meu branch atual?
  • 42.
    FAQ • Como faço para ver o que foi mudado no meu branch remoto, sem atualizar meu branch atual? • $ git fetch && git log ..origin/master --oneline
  • 43.
    FAQ Fiz pull, realizeium monte de modificações. Quero simplesmente "desistir" delas, voltar ao estado antes das modificações. Qual o comando?
  • 44.
    FAQ Fiz pull, realizei um monte de modificações. Quero simplesmente "desistir" delas, voltar ao estado antes das modificações. Qual o comando? Se estiver no working directory: $ git checkout -- <file> Se já tiver dado “add” (staging): $ git reset HEAD <file> Se já tiver commitado: $ git reflog $ git reset --hard HEAD@{1}
  • 45.
    OBRIGADO! João Maciel, DevOps- Samba Tech joao.maciel@sambatech.com.br