Skip to content
Denire edited this page Apr 7, 2021 · 4 revisions

Heroku is a cloud platform that can host your JAICF server running with Ktor, Spring Boot or any other HTTP server.

Example

Here is a ready to use template that can be used to deploy your JAICF project to Heroku cloud with a single click. You can investigate its Procfile and build.gradle.kts to learn how you can integrate your JAICF project with Heroku cloud.

How to use

Your JAICF project should be compiled into fat jar file that contains all required libraries inside. Also there should be Procfile available in the root of your project's source.

1. Create a Heroku app

Sign-in and create an app on the Heroku dashboard.

2. Add an application and shadow plugins to build.gradle

Also add corresponding stage task and main class configuration that points to the class with main function. Here is an example:

plugins {
    application
    kotlin("jvm") version "1.3.61"
    id("com.github.johnrengelman.shadow") version "5.0.0"
}
application {
    mainClassName = "com.justai.jaicf.template.ServerKt"
}
repositories {
    mavenCentral()
    jcenter()
}
dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation("com.just-ai.jaicf:core:$jaicf")
    implementation("io.ktor:ktor-server-netty:$ktor")
    ...
}
tasks.withType<Jar> {
    manifest {
        attributes(
            mapOf(
                "Main-Class" to application.mainClassName
            )
        )
    }
}

tasks.create("stage") {
    dependsOn("shadowJar")
}

3. Add Procfile to the root

Replace "app-name-1.0.0" with your app name and version:

web: java -jar build/libs/app-name-1.0.0-all.jar

4. Push your code to Heroku

Install Heroku CLI and run these commands from inside the project's folder:

$ git add .
$ git commit -am "make it better"
$ git push heroku master

Heroku will build and deploy your server automatically.

Making changes

Each time you're ready to push some code changes to Heroku, just commit and push your code to the Heroku git as described in section 4.

Clone this wiki locally