Heroku
Kotlin
deploy
Spark
gradle

gradleファイルをherokuにデプロイ

備忘録

build.gradle

jvmのバージョンは明記

build.gradle
sourceCompatibility = 1.8
compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

最後にこれを追加した

build.gradle
task stage(type: Copy, dependsOn: [clean, build]) {
    from jar.archivePath
    into project.rootDir 
    rename {
        'app.jar'
    }
}
stage.mustRunAfter(clean)

clean << {
    project.file('app.jar').delete()
}

heroku

herokuに登録後
コマンドラインでherokuにログインしたあと以下を実行(プロジェクト内で)

$ heroku login
$ heroku config:set GRADLE_TASK="build"

herokuのポートに合わせるためにソースコードに以下を記述

main.kt
fun getHerokuAssignedPort(): Int {
    val processBuilder = ProcessBuilder()
    return if (processBuilder.environment()["PORT"] != null) {
        Integer.parseInt(processBuilder.environment()["PORT"])
    } else 4567
//return default port if heroku-port isn't set (i.e. on localhost)
}

ビルド

./gradlew build
でビルドした後jarファイルがbuild/libsの中にあることを確認

デプロイ

Procfileに以下を記述

Procfile
web: java $JAVA_OPTS -jar build/libs/{ファイル名}.jar  -Dserver.port=$PORT

herokuにデプロイ
エラーは覚悟で・・・

git add ./
git commit -m "first app"
git push heroku master"

herokuのマイページからlogを確認
crashedとか書いてなかったらいけてるはず

  • これで無理だった場合

mv build/libs/*.jar ./
でプロジェクトのホームディレクトリに移動して

Procfile
web: java $JAVA_OPTS -jar {ファイル名}.jar  -Dserver.port=$PORT

に変更する

これで無理ならひたすらエラーをコピって検索に尽きる・・・

おまけ

$ heroku local

でローカル実行

まとめ

確実に実行できるjarファイルを用意してからherokuにdeploy!!そしてenjoy!!