Search code examples
androidbuild-server

Android Build Server for a 1 Programmer "Team"?


Would you recommend the overhead of installing & configuring an Android build server for a 1 programmer project? The alternative is to upload all sources from development computer to git, download to another computer with Android Studio & Android SDK, and build from Android Studio.

If the answer is yes, would you recommend Jenkins, or another solution?


Solution

  • IMHO, yes, if you have significant time to set it up and maintain it on a separate machine. (I personally would not use a shared machine: too many reasons to restart and disrupt it.)

    I feel an extra level of confidence each time I check in if Jenkins builds the whole project successfully from a fresh dir (one less thing I have to do.)

    If I forget to check in an important file, Jenkins complains. Or, if I code something that generates a new Lint warning, Jenkins puts a spike in the graph. In other words, on solo projects, Jenkins is like an assistant (or mentor) that helps check my work.

    Jenkins can warehouse app installers for future reference. So, it also helps me stay organized.

    Jenkins offers some nice communications capabilities too. You can have it automatically notify others via Slack, or put an installer on Dropbox, or, through a service like Zapier, create a custom card in Trello. So Jenkins gives me an outward-facing messenger and delivery service.

    These are some plugins I have found useful with Android builds:

    • Android Lint
    • Credentials Binding
    • Environment Injector
    • Gradle
    • Slack Notification
    • ThinBackup
    • Version Number
    • Zentimestamp

    Of course, this only scratches the surface.

    It requires some ongoing maintenance work though. And sometimes it's confusing/challenging to configure. (e.g. some plugins are poorly documented or no longer actively maintained. The linter in Android Studio is not exactly the same as the default one run through gradle by Jenkins, etc)

    When I first set my build server up, I had a couple weeks of downtime when I was able to experiment with different plugins and troubleshoot the server. I probably wouldn't have done it without that empty window of time at the start.