So far we’ve tested our backend with images locally, now let’s move it to Heroku! But this time we’ll make things easier for us by deploying it directly on Heroku (without having to build the jar in Android Studio and deploying it manually after with
Procfile to the project
Write the following inside the
web: java -jar ./backend/build/libs/Backend.jar
It will tell Heroku to start a web dyno and deploy our
If you haven’t done so yet, add
system.properties to the project root as well.
It should contain the following settings, which will specify which module to build and what Java runtime to use:
rootProject.name = "backend"
commit both files: make sure
system.properties is committed, because it can be ignored!
Then do git
Now run the following command in terminal:
heroku config:set GRADLE_TASK=":backend:build"
===== side note =====
(If you want to manually build a jar file again, you’ll need to run
heroku buildpacks:clear --remote <branch-name>)
If you are deploying the heroku project on a new branch, don’t forget to specify it with
–remote postfix and also remember to install a postgres plugin there, for example like this:
heroku addons:create heroku-postgresql --remote <branch-name>
===== side note =====
We need to set a
buildpack for Heroku.
We’re using gradle, so we have to run the following command in terminal:
heroku buildpacks:set heroku/gradle
Finally, run to create a new release using this buildpack.
You will see a build failure 😱
Looks like we’ve forgotten something important.
If you look at the build logs, you’ll notice this error:
* What went wrong:
remote: A problem occurred configuring project ':buildSrc'.
remote: > Could not resolve all artifacts for configuration ':buildSrc:classpath'.
remote: > Could not resolve org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21.
Let’s add the following line to our dependencies in backend
git push heroku command again.
It will take some time for the project to build, but finally you should see something like this:
Before serving your pizza directly from Heroku, you will need to set the necessary environment variables like this:
heroku config:set accessKey="MyAccessKeyForAWS"
heroku config:set secretKey="MySecretKeyForAWS"
heroku config:set bucketName="kmpizza"
heroku config:set region="eu-central-1"
Now, you can go to https://your-heroku-app-name.herokuapp.com/pizza and get a greeting from your backend, comfortably deployed on Heroku.
If you are hungry enough, then you can even try and add a pizza recipe with an image using Postman, just like we did previously when testing it locally!
Hey, we’re done with the backend for now! 🎉
We’ve build our basic backend for the app, so let’s move on to the world of shared KMM code!
In the next steps we’ll be using this backend while building the shared part of our future iOS and Android apps.