Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Dall'idea al deploy un lungo viaggio che passa per git flow e semver

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Git branching model
Git branching model
Chargement dans…3
×

Consultez-les par la suite

1 sur 29 Publicité

Dall'idea al deploy un lungo viaggio che passa per git flow e semver

Parliamo tanto di DevOps e ci concentriamo sui tool senza soffermarci a pensare che DevOps è principalmente una metodologia. Lo scopo è rendere l'intera filiera il più fluida e lineare possibile, rimuovendo impedimenti e cercando di prevenire e anticipare problemi.
Possiamo costruire tutto il processo di sviluppo, partendo dai vagiti iniziali del backlog per finire che il deploy fisico in ottica DevOps? Il processo ha impatto sulle scelte tecniche? Pratiche come SemVer e GitFlow hanno invece un impatto sul backlog?
Analizzeremo l'intero processo di sviluppo di Particular Software, dalla gestione del backlog al deploy automatico in produzione, con lo scopo di evidenziare come pratiche che sembrano disconnesse abbiano invece impatto su tutta la filiera.

Parliamo tanto di DevOps e ci concentriamo sui tool senza soffermarci a pensare che DevOps è principalmente una metodologia. Lo scopo è rendere l'intera filiera il più fluida e lineare possibile, rimuovendo impedimenti e cercando di prevenire e anticipare problemi.
Possiamo costruire tutto il processo di sviluppo, partendo dai vagiti iniziali del backlog per finire che il deploy fisico in ottica DevOps? Il processo ha impatto sulle scelte tecniche? Pratiche come SemVer e GitFlow hanno invece un impatto sul backlog?
Analizzeremo l'intero processo di sviluppo di Particular Software, dalla gestione del backlog al deploy automatico in produzione, con lo scopo di evidenziare come pratiche che sembrano disconnesse abbiano invece impatto su tutta la filiera.

Publicité
Publicité

Plus De Contenu Connexe

Similaire à Dall'idea al deploy un lungo viaggio che passa per git flow e semver (20)

Plus par Mauro Servienti (20)

Publicité

Plus récents (20)

Dall'idea al deploy un lungo viaggio che passa per git flow e semver

  1. 1. #DOH17#DOH17
  2. 2. dall'idea al deploy un lungo viaggio che passa per GitFlow e SemVer Mauro Servienti @mauroservienti
  3. 3. @mauroservienti #DOH17 3 Organizer & sponsors GetLatestVersion.it
  4. 4. @mauroservienti 4 DevOps è prima di tutto una forma mentis. Gli strumenti sono una conseguenza
  5. 5. @mauroservienti #DOH17 backlog La gestione delle «idee»
  6. 6. «In progress»
  7. 7. @mauroservienti #DOH17 develop feature/super-segreta feature/meno-segreta master release/1.0.0
  8. 8. @mauroservienti #DOH17 Assiomi •develop è sempre rilasciabile come beta •master è sempre rilasciabile in produzione
  9. 9. @mauroservienti #DOH17 Supponiamo che… • Progetto vuoto: v0.0.0 • Feature A: v0.1.0 • Release: v0.1.0 • Feature B e Feature C in parallelo: v? • Il lavoro in parallelo complica il tener traccia • Della versione • Di cosa si è rilasciato • Della retro-compatibilità • Con patch e hotfix si complica ancora di più
  10. 10. Introduzione a GitVersion
  11. 11. @mauroservienti #DOH17 GitVersion • Assegnare un numero di release è un task da macchina • non da umano senziente • Cosa ci impedisce di guardare alla history e • fare dei ragionamenti sullo stato attuale? • generare un numero di versione sensato? • develop -> unstable/beta • master -> stable/release • Disponibile come: • Task di MSBuild • Library • Command line
  12. 12. Cosa fa GitVersion per noi
  13. 13. @mauroservienti #DOH17 gestione della release develop feature/super-segreta feature/meno-segreta master release/1.0.0
  14. 14. @mauroservienti #DOH17 gestione delle nuove feature • feature/xyz • Anche nome branch che volete voli • Pull Request develop feature/super-segreta
  15. 15. <intermezzo> Piccola divagazione
  16. 16. @mauroservienti #DOH17 Pull Request e Review • Nulla di diverso dal branch-per-feature tradizionale • Un sistema basato sui concetti di GitHub introduce • Pull Request • Review • Il nostro flusso diventa quindi: • Branch -> Lavoro -> Push -> PR -> Review -> Merge
  17. 17. @mauroservienti #DOH17 PR -> review -> merge You cannot merge your own PR • Importantissime in un processo attento alla qualità • Le review sono la base della condivisione del sapere • Siccome ci piace automatizzare: • Introduzione delle build automatiche sulle PR • Simili ad un gated check-in (per certi versi)
  18. 18. </intermezzo> Torniamo a noi…
  19. 19. @mauroservienti #DOH17 gestione delle hotfix/patch develop master hotfix/1.1.1 bug
  20. 20. @mauroservienti #DOH17 gestione delle hotfix/patch nel passato develop master support/1.0 bug hotfix/1.0.1
  21. 21. @mauroservienti #DOH17 Perché siamo così ossessionati dal numero di versione?
  22. 22. @mauroservienti #DOH17 Semantic Versioning È vitale che una libreria comunichi le tipologie di cambiamento tra una versione e l’altra
  23. 23. @mauroservienti #DOH17 SemVer: Major.Minor.Patch • Il numero di versione ha una semantica ben precisa • Major: la nuova versione contiene breaking changes • Minor: nuove feature retro-compatibili • Patch: bug fixing retro-compatibile • Fondamentale per permettere a chi vi usa di capire cosa succederà • Soprattutto se aggiorna senza ricompilare, come per le hotfix…
  24. 24. @mauroservienti #DOH17 senza ricompilare…breaking changes • Voi usate un mio assembly che contiene: void Foo() -> int Foo() enum Bar{ Coffee, Tea } -> enum Bar{ Coffee, Cappuccino, Tea } void FooBar() -> void FooBar( int arg: 10 )
  25. 25. @mauroservienti #DOH17 ApprovalTests (salvaci tu) • Rompe la build se: • ci sono breaking changes • non rispettiamo SemVer • OSS: //github.com/approvals/ApprovalTests.Net • Tanto semplice quanto scrivere un test:
  26. 26. @mauroservienti #DOH17 //apicomparer.particular.net/compare/rabbitmq.client/3.4.3...3.5.7
  27. 27. @mauroservienti #DOH17 Riassumendo • Se non avete un processo basato su CI non avete un processo • Continuous Integration è la base della serenità • GitFlow vi da la possibilità di gestire tutti gli scenari • Automatizzate tutto l’automatizzabile • Le persone sono fatte per pensare non per eseguire • Semantic Versioning è semplicemente buona educazione • Spingetevi alla paranoia se ne avete bisogno • ApprovalTests + ApiComparer
  28. 28. #DOH17#DOH17 Mauro Servienti Solution Architect @ Particular Software makers of NServiceBus mauro.servienti@particular.neti @mauroservienti //github.com/mauroservienti
  29. 29. #DOH17#DOH17 Grazie!

×