Gradleを使用してHerokuアプリをデプロイする

HerokuでのRatpackアプリケーションの展開に関する前回の記事の続きで、今日はGradleプラグインの使用について説明します。 Heroku PaaSにシンプルなRatpackアプリをデプロイするのは困難な経験でした。 ビルドパックがHerokuにデプロイするための複雑さをうかがいましたが、これは必要ないということです。

この記事では、より簡単な展開方法を示します。 このメソッドは、 Heroku Toolbeltとカスタムビルド パックを明示的に使用する必要はありません。 また、JavaやGroovyの開発者が必要としないRuby、RVM、またはその他の多くのRuby関連テクノロジーも必要なくなり、これについても知る必要がなくなります。



これはすべて、Herokuが使用できる優れたJava APIのおかげです。 これは、Herokuと直接やり取りできるシンプルなJavaライブラリです。 Eclipse Foundationが提供するJGitライブラリを介してGitリポジトリを操作する機能を追加しました。プロジェクトのディレクトリからアプリケーションをデプロイするために必要なものはすべて揃っています。 利点は、これらすべてが、すべてを管理するGradleプラグインでラップされていることです。

実際、必要なのは、PATHの環境変数を備えたインストール済みのJDK、インストール済みのGradle、および優れたテキストエディターだけです。 さあ、始めましょう:



構成


まず、 build.gradleプロジェクトファイルを次のように構成する必要があります。



buildscript { repositories { ... mavenCentral() maven { url 'http://dl.bintray.com/vermeulen-mp/gradle-plugins' } } dependencies { classpath "org.gradle.api.plugins:gradle-heroku:0.9.6" } } apply plugin: 'heroku' ... heroku { //get this from heroku apiKey = 'my-api-key' //set this on first run if you don't want a generated name //appName = 'some-unique-app-name' //set this if you are not happy with the default gradlew buildpack //buildpack = 'http://somebuildpack }
      
      







これは、herokuプラグインを使用するためのビルドのセットアップです。 herokuコードブロックに注意してください。プラグインの構成はそこに記述されています。 ここで必要なフィールドはapiKeyのみです。 appNameフィールドは最初の起動には必要ありませんが、以降の起動には指定する必要があります。 このフィールドが指定されていない場合、Herokuはユーザーに代わってアプリケーション名を生成し、ローカルgitリポジトリをHerokuのアプリケーションインスタンスにリンクします。 生成された名前が気に入らない場合は、アプリケーションを初めて起動するときにアプリケーションに明示的に名前を付けることができます。

また、セキュリティ上の問題を解決するために、プロパティファイルからapiKeyを抽出できることにも注意してください

次に、 Procfileをプロジェクトのルートフォルダーに追加する必要があります。 これは、アプリケーションがデプロイされたときに、アプリケーションの初期ロードを行う小さなファイルです。 ここでの重要な機能は、コマンドがweb:で始まることです これは、デプロイしようとしているアプリケーションによって異なります。



Fat Jarアプリ(Spring BootおよびDropWizard)


プロジェクトのルートフォルダーにProcfileを作成し、次の内容を追加します。

 --- default_process_types: web: java -jar -Dport=$PORT build/libs/my-springboot-fat.jar
      
      







fat.jarを使用してSpring BootまたはDropwizardアプリケーションに対してこのコマンドを実行するだけで、アプリケーションを起動できます。



ラットパック


Ratpackの展開はほぼ同じくらい簡単ですが、少し調整が必要です。 最初に、Gradleが起動スクリプトで名前を付けるために使用するプロジェクトルートディレクトリへのルートアクセスが必要です。 これは、プロジェクトのルートフォルダーにsettings.gradleファイルを追加することで実行できます。



settings.gradleファイルの内容:

 rootProject.name = 'ratpack'
      
      







次に、 Procfileを追加します。

 --- default_process_types: web: export RATPACK_OPTS="-Dratpack.port=$PORT" && build/install/ratpack/bin/ratpack build/install/ratpack/ratpack.groovy
      
      







ビルドパック


build.gradleファイルのherokuコードブロックでbuildpackを指定しなかった場合、プラグインはデフォルトのbuildpackを選択します 。 このビルドパックは、プロジェクトのgradleラッパーがアプリケーションをデプロイする準備をするために使用します。 プロジェクトディレクトリでgradlewコマンドを実行するだけです。 また、ビルドファイル内にdefaultTasksをインストールする必要があります。



デフォルトのタスク


デフォルトのビルドパックが実行するタスクを認識するために、 build.gradleファイルでタスクのリストを指定する必要があります。 たとえば、Ratpackアプリケーションを展開用に準備するには、次のタスクを追加する必要があります。

 defaultTasks "clean", "build", "installApp"
      
      







JDKを受け入れます!


デフォルトのビルドパックでは、ランタイムで使用するJDKを選択することもできます。 system.propertiesファイルをプロジェクトのベースフォルダーに配置し、次のコンテンツを追加します。

 java.runtime.version=1.7
      
      







system.propertiesファイルプロジェクトに存在しない場合、buildpackはJDK 1.8を想定しています。



始めましょう!


これまではすべてが構成用でしたが、今度はアプリケーションを起動します。 ターミナルを開き、次のコマンドを入力します。

 $ gradle tasks ... herokuAppCreate - Creates a new application on Heroku. herokuAppDeploy - Deploy the application to Heroku. herokuAppDestroy - Destroy the application on Heroku. herokuAppInfo - Displays comprehensive information about the named application. herokuAppList - Lists all Apps available for the current user on Heroku. herokuBuildpack - Downloads and explodes the specified buildpack to this project. ...
      
      







これで、展開を開始できることがわかりました。 ラッパーをgitに追加することから始めましょう。

 $ ./gradlew wrapper $ git add gradlew gradle $ git commit -m 'Add wrapper.'
      
      







次に、Herokuでアプリケーションを作成してデプロイします。

 $ ./gradlew herokuCreateApp $ ./gradlew herokuDeployApp
      
      







すべてが順調であれば、Herokuにデプロイされたアプリケーションがあるはずです。

GitHubでgradle プラグインデフォルトのbuilpackのソースコードを見つけることができます。

それだけです!

Gradleプロジェクトを使用してHerokuにアプリケーションをデプロイするのがどれほど簡単かを見ました。 必要なものは、apiKeyと、クラウドでアプリケーションを甘美に歌うための非常に簡単な設定だけです。 Herokuでのアプリケーションのデプロイがかつてないほど容易になりました! 元の記事はこちらです。 ご清聴ありがとうございました。



All Articles