Continuous Integration with Kotlin (BuddyBuild)

0
130
Kotlin Tutorial in Android Studio
Kotlin Tutorial in Android Studio

Something that we need to continue improving our Keddit App is to include Continuous Integration with Kotlin. It would be great if a new build is run every time we push new code to the repository, the unit tests are run automatically for us and also to receive an alert if the build has failed. Let’s do it with our Keddit App.

Buddybuild ties together and automates building, deploying and gathering feedback for mobile apps.

If you’re developing a mobile application, and are looking for a mobile focused continuous integration, continuous deployment and iterative feedback solution that takes minutes to setup and get running, buddybuild is the right solution for you.

BuddyBuild is the tool that I chose to bring Continuous Integration into the Keddit App. It was really easy for me to configure it and have it working with my Kotlin Android apps. So let me show you how to configure it.

1. Go to BuddyBuild dashboard

Open this link in your browser to start working with BuddyBuild:

https://dashboard.buddybuild.com/

2. Login

BuddyBuild has a great integration with GitHub and Bitbucket. Also you can use one of them as a social login:

3. Add a new App

Onces you are ready and logged in you will be redirected to the dashboard and add a new App:

Choose your Source Repository, pick a Repository and press the “Build” button:

Select your repository and press “Build”
Select your repository and press “Build”

Preparing…

After you pick your repo, BuddyBuild will prepare everything to download your code, detect your project (Android in this case) and build your project for you:

Building…

Deploying…

And everything is up and running! now we can access our dashboard to see some Build details.

2Dashboard

Great! Our first build was successful! but there is something weird… where are our unit tests??

3Unit Tests

Unit Tests are disable by default and we have to manually enable it. Click on the first build and go to the JUnit Tests section, you will see something like this:

In this build the unit tests were not run, so let’s enable it!

Enable Unit Tests

Go back to the dashboard and press this Setting button:

This will open this section and make sure to enable Unit Tests:

Enable Unit Tests
Enable Unit Tests

Great! now let’s run a new build. To do so, go back again to the dashboard and press the button “Build Now”, next to the Settings button.

Press “Build Now”
Press “Build Now”

30 Tests?

If you are following this Keddit series maybe you remember that we didn’t create 30 unit tests but just 6 (3 regular JUnit tests and 3 with Spek). So what is happening here? let’s review this, go to the JUnit Tests section inside our Second Build:

JUnit Tests
JUnit Tests

Ok I found that It said that we have 15 unit tests for the app:debug artifact and there are another 15 unit tests for the app:release. You can choose between then from the dropdown list:

But still this doesn’t make any sense at all as we didn’t created 15 unit tests!

Regular JUnit Tests

Reviewing our unit tests details I found that the regular JUnit tests are correct. All of them appears inside the NewsManagerTest class:

Spek Unit Tests

Well… seems that the problem is related to Spek and the way it declares each unit test, so we have here the Spek class:

And every Spek step is considered as a different unit test and this is not good at all 🙁

Do you remember the “Given… on… it…” from Spek?

We have a unit test detail for each of them:

GIVEN a New Manager… ON service return something… IT should receive something and no errors”

Unfortunately I didn’t find any solution to this so if you don’t want to have these issues I think the only thing to do for now is to create just regular JUnit tests, otherwise you don’t have a realistic report of your unit tests.

4Build Status Badge

BuddyBuild allows you to create the Build Status Badge for your README file.

Go to Main Settings:

From the Build Settings Menu: Choose Build Status Badges

And copy & paste this link into your README.md file.

5Push & Build automatically

Let’s add this badge to our README file. BuddyBuild by default will run a new build process for us every time you push new code.

Badge for Keddit App:

[![BuddyBuild](

https://dashboard.buddybuild.com/api/statusImage?appID=579d1cfe2934630100111037&branch=master&build=latest)](https://dashboard.buddybuild.com/apps/579d1cfe2934630100111037/build/latest)

Running new Build automatically

As you can see, after editing the README file and pushing these changes, BuddyBuild is notified and a new build has started:

You can see in the COMMIT MESSAGE that it was related to the new badge added to the readme file. For sure this was really easy!

6Conclusion

As you can see Kotlin language is so easy to integrate with a Continuous Integrations system like BuddyBuild. Feel free to continue reviewing all the Settings that you have in BuddyBuild system, it has more sophisticated features to do more cool stuff with it.

Another important thing to highlight is that we didn’t have to put any line of code to configure all the Build system, it was just a few clicks to have it up and running.

Also make sure to configure Notifications properly just to avoid having your inbox full of emails and receive just the important ones:

😀

See you in the next story!

Share your thoughts

Loading Facebook Comments ...
Loading Disqus Comments ...