Workflow

Git + Gitflow

¿Qué es y por qué lo necesitamos?

  • Historial de cambios
  • Control de versiones
  • Repositorios en la nube
  • Colaboración
git add .
git commit -m 'Mensaje de commit'
git push

¿Qué no va en Git?

# dependencies
/node_modules

# testing
/coverage
/.out

# production
/build
/dist
**/*.css

# misc
.DS_Store
.env
npm-debug.log*
yarn-debug.log*
yarn-error.log*

.gitignore

Git merge be like:

¿Cómo hacer un buen commit?

  • Empezar por un verbo (UPDATE, FIX, DELETE)
  • Usar palabras clave fáciles de buscar
  • No exceder 70 caracteres

¿Cada cuánto hacer commit?

Cuando el  <3  lo quiera

  • Funcionalidad básica
  • Cambios drásticos
  • Muchos archivos modificados

¿Qué es Gitflow?

https://github.com/nvie/gitflow

Master

Versión estable de la app que está en producción

 

Develop

La última versión de la aplicación

 

Features

Todas las funcionalidades en las que se están trabajando

 

Releases

Versión estable de la app a la que se hará QA

 

Hotfixes

Arreglos de último minuto sobre producción

Feature:

 

  • ​Funcionalidad básica
  • Responde a una historia de usuario
    o un bug
  • Es independiente

¿Y si alguna funcionalidad lo arruina todo?

Develop:

 

  • ​App con las últimas funcionalidades
  • De aquí salen las features y los candidatos a release

Release:

 

  • ​App con funcionalidades mínimas para lanzamiento
  • Sitio web de staging
  • QA
  • Nombre: release-*

Master:

  • ​Sitio web en producción
  • Última versión estable de la app

¿Y si hay un bug en producción?

Hotfixes:

  • ​Arreglos en producción
  • Nombre: hotfix-*

Intentando recordar todos los pasos

https://danielkummer.github.io/git-flow-cheatsheet/

SourceTree al rescate

Continuous 

Deployment 

Develop

Release

Master

# This is a sample build configuration for PHP.
# Check our guides at https://confluence.atlassian.com/x/e8YWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:8.9.1

pipelines:
  branches:
    master:
      - step:
          deployment: production
          script:
            - echo $MY_SSH_KEY > /root/.ssh/id_rsa.pub
            - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.18.1
            - export PATH=$HOME/.yarn/bin:$PATH
            - yarn
            - yarn build
            - scp -r build root@159.65.230.100:/var/www/html
            - scp deploy.sh root@159.65.230.100:/var/www/html
            - ssh -T root@159.65.230.100 "cd /var/www/html; chmod +x ./deploy.sh; ./deploy.sh"
    develop:
      - step:
          caches:
            - node
          deployment: staging
          script:
            - echo $MY_SSH_KEY > /root/.ssh/id_rsa.pub
            - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 0.18.1
            - export PATH=$HOME/.yarn/bin:$PATH
            - yarn
            - yarn build
            - scp -r build root@159.65.230.109:/var/www/html
            - scp deploy.sh root@159.65.230.109:/var/www/html
            - ssh -T root@159.65.230.109 "cd /var/www/html; chmod +x ./deploy.sh; ./deploy.sh"

/bitbucket-pipelines.yml

¿Preguntas?

¡Gracias!

@waravahome

Links

  • https://bitbucket.org/warava/warava-deployments/overview
  • https://netlify.com
  • https://danielkummer.github.io/git-flow-cheatsheet
  • https://www.warava.com
Made with Slides.com