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

Automating Your Workflow

Automating Your Workflow

Think through what a typical week looks like for you. Maybe you’re pulling down pull requests to review, sending out builds for an internal team to test, keeping tickets up-to-date, or signing and distributing builds to clients or the App Store (maybe all of the above?). How much time would be released back to your week if these tasks were automated?

This talk will explore how Float has successfully automated many components of its workflow using Jenkins. We’ve enjoyed improved team communication, faster releases, and fewer bugs being released into the wild since adding Jenkins to the team. It has even begun submitting its own pull requests to our code bases.

Daniel Pfeiffer

August 22, 2016
Tweet

More Decks by Daniel Pfeiffer

Other Decks in Programming

Transcript

  1. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Lay of

    the Land Git Source Control (We roughly follow git-flow as our branching strategy) Assembla Ticket Management (also hosts our git repositories) Slack Facilitates team communication HockeyApp Distributes builds internally and externally Jenkins Automation server
  2. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com An effective

    automated workflow 
 works where your developers work.
  3. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com An automated

    workflow goes beyond generating builds; 
 it facilitates team communication.
  4. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com You don't

    need a fancy set of servers or hardware to begin automating your workflow.
  5. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Jenkins Overview

    Node Executer Executer Job Node Executer Executer Job Job Job
  6. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Jenkins Overview

    Node Executer Executer Job Node Executer Executer Job Job Job
  7. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Jenkins Overview

    Node Executer Job All you need to get started is 
 one node and one executor.
  8. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Plugins •

    Assembla merge request builder • Build Monitor View • Checkstyle Plug-in • Environment Injector Plugin • Git plugin • Google Play Android Publisher Plugin • Gradle Plugin • HockeyApp Plugin • JUnit Plugin • Managed Scripts • promoted builds plugins • Slack Notification Plugin • Static Analysis Collector Plug-in • Task Scanner Plug-in • Warnings Plug-in • Xcode integration and many, many more
  9. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com The CI

    Job (Continuous Integration) • Triggered automatically when a merge request is opened • Performs a static analysis and runs all available tests • Generates a .ipa file and links to it in the merge request • Upvotes or downvotes the merge request based on result Provides an immediate review of new code 
 and allows human reviews to be be focused 
 on logic and not on style. 1
  10. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com An aside:

    Code Reviews • We are a team • Every line of code should be seen by at least two humans • No one is individually responsible for shipping a broken app • We are a team of experts • Each member offers unique perspectives on how to solve problems • Builds shared knowledge throughout the team
  11. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com The Nightly

    Job • Triggered automatically each night 
 (if there are new commits) • Performs a static analysis and runs all available tests • Uploads build to HockeyApp and sends to team • Updates tickets impacted by the build • Posts notifications in Slack Provides the QA team with an always up-to-date build so that feedback loops are short. 2
  12. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com The Nightly

    Job • Triggered manually requiring release notes to be entered • Automatically waits for QA team to approve nightly • Re-signs nightly build using client’s distribution certificate • Uploads build to HockeyApp and sends to client • Posts notifications in Slack Provides clients transparency to the progress 
 of the project with frequent beta builds. 2 Promoted
  13. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com The Release

    Job • Triggered manually when client approves builds • Requires build parameters for version and release notes • Uploads debug symbols to HockeyApp • Distributes build via App Store or MAM • Posts notifications in Slack Reduces the effort of shipping to users so we can rapidly add new features or respond to bugs. 3
  14. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Having an

    automated workflow 
 is not like having an employee...
 it's more like having a puppy.
  15. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com Implement a

    static analysis process 5 Analysis Collector plugin
  16. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com An effective

    automated workflow focuses on providing clear, 
 detailed information.
  17. Copyright © 2016 Float. All rights reserved. www.gowithfloat.com It is

    important to truly understand a process before it can be automated.