Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeneXus Android team - Development Process

GeneXus Android team - Development Process

Shows the development process that we use on GeneXus Android team

Juan Andrés Diana

May 03, 2019
Tweet

More Decks by Juan Andrés Diana

Other Decks in Programming

Transcript

  1. CONTENT ▸ Repositories structure ▸ Tools ▸ Development workflow ▸

    Additional tools ▸ Release workflow ▸ Impact of these changes
  2. REPOSITORIES STRUCTURE MAIN REPOSITORIES ▸ Genexus. Uses SVN. Hosted on

    a internal network server ▸ Android’s FlexibleClient. Uses Git. Hosted on GitHub
  3. REPOSITORIES STRUCTURE MAIN REPOSITORIES ▸ Genexus. Uses SVN. Hosted on

    a internal network server ▸ Android’s FlexibleClient. Uses Git. Hosted on GitHub ▸ GeneXus Standard Classes. Uses Git. Hosted on GitHub (Currently migrating)
  4. MAN IS A TOOL-USING ANIMAL; WITHOUT TOOLS HE IS NOTHING,

    WITH TOOLS HE IS ALL. Thomas Carlyle
  5. ?

  6. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING Why work on a separate branch for each change?
  7. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING Why work on a separate branch for each change? ▸ Ease of working on several change sets in parallel
  8. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING Why work on a separate branch for each change? ▸ Ease of working on several change sets in parallel ▸ Avoid change sets hell
  9. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING Why work on a separate branch for each change? ▸ Ease of working on several change sets in parallel ▸ Avoid change sets hell ▸ Higher code quality before merging to master
  10. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING Why work on a separate branch for each change? ▸ Ease of working on several change sets in parallel ▸ Avoid change sets hell ▸ Higher code quality before merging to master ▸ Higher confidence on our tests (as they were performed in isolation)
  11. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING How do I create a new branch from master? ▸ From command-line:
 git checkout -b my-new-feature ▸ From the IDE or GUI Tool:
  12. DEVELOPMENT WORKFLOW #2. OPEN A BRANCH FROM MASTER TO START

    WORKING How do I create a new branch from master? ▸ From command-line:
 git checkout -b my-new-feature ▸ From the IDE or GUI Tool:
  13. DEVELOPMENT WORKFLOW #3. WORK ON THE BRANCH UNTIL IT’S READY

    FOR REVIEW Best Practices ▸ Many commits!
  14. DEVELOPMENT WORKFLOW #3. WORK ON THE BRANCH UNTIL IT’S READY

    FOR REVIEW Best Practices ▸ Many commits! ▸ Rewriting the history, fear not!
  15. DEVELOPMENT WORKFLOW #3. WORK ON THE BRANCH UNTIL IT’S READY

    FOR REVIEW Best Practices ▸ Many commits! ▸ Rewriting the history, fear not! Easier Code Reviews!
  16. DEVELOPMENT WORKFLOW #4. OPEN A PULL REQUEST ON GITHUB ▸

    Push the branch to GitHub ▸ Open the Pull Request ▸ Write a good description
  17. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged?
  18. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build
  19. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build 1. Build 2. Unit Tests 3. Static code analyzers (Error-prone, Android Lint, Checkstyle) 4. Publish to Nexus
  20. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build 2. Approved by at least one teammate
  21. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build 2. Approved by at least one teammate 3. Tested by the support team
  22. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build 2. Approved by at least one teammate 3. Tested by the support team
  23. DEVELOPMENT WORKFLOW #5. KEEP WORKING ON THE PULL REQUEST UNTIL

    IT’S READY TO BE MERGED When is a PR ready to be merged? 1. TeamCity must report a successful build 2. Approved by at least one teammate 3. Tested by the support team
  24. IMPACT OF THESE CHANGES BENEFITS ✓ Higher code quality ✓

    Code reviews ✓ Change sets tested in isolation
  25. IMPACT OF THESE CHANGES BENEFITS ✓ Higher code quality ✓

    Code reviews ✓ Change sets tested in isolation ✓ SCM is much faster and stable
  26. IMPACT OF THESE CHANGES BENEFITS ✓ Huge improvement in build

    feedback ✓ Android FlexibleClient build avg. time: < 2 min (down from hours) ✓ Signal to noise ratio is awesome (no more build emails)
  27. IMPACT OF THESE CHANGES BENEFITS ✓ Huge improvement in build

    feedback ✓ Android FlexibleClient build avg. time: < 2 min (down from hours) ✓ Signal to noise ratio is awesome (no more build emails) ✓ CI is easily scalable, updatable and has much better integrations ✓ Built on top of Docker
  28. IMPACT OF THESE CHANGES BENEFITS ✓ Agile test process ✓

    Less than 25 mins from Fixed to Tested! (before it took hours literally)
  29. IMPACT OF THESE CHANGES BENEFITS ✓ Agile test process ✓

    Less than 25 mins from Fixed to Tested! (before it took hours literally) ✓ Much better tracking of the changes ✓ PRs list brings gap visibility (no more lost issues into oblivion) ✓ CHANGELOG let us see what changed in each release