前回はアプリを動かしましたが、コミットによって動かなくなりました。
問題の切り分け
前回は、index.htmlとglobal.jsonを書き換えました。
index.htmlはHello Worldという文字列を変更しただけなので、これが動かなくなった原因とは思えません。
となると、global.jsonに対して適用した、.NET Core SDKの変更が問題に見えます。
というわけで、global.jsonの変更だけを元に戻してコミット、プッシュし、再度Bluemix上のアプリを確認します。
問題ないです。
これで、問題が.NET Core SDKのバージョンが問題になっていることは確定です。
.NET Coreの変更
.NET Core SDKを1.0.0-preview1-002702から1.0.0-preview2-003121に変更したことが問題なのはわかりました。
実行環境に、1.0.0-preview2-003121がインストールされていないのが問題ならば選択肢は2つです。
- ローカル環境の.NET Core SDKのバージョンをBluemixに合わせる
- Bluemixの.NET Core SDKのバージョンをローカル環境に合わせる
が、前者はありえません。
.NET Core SDKの最新版が出るたびに、指をくわえて待つというのはあまりにもチキンです。
なので、ここはBluemixの環境を変更します。
Google先生に聞いてみても、芳しい結果が得られませんでしたが、公式ドキュメントのWhat’s new in Bluemixに気になる記述が。
Upgrade to the ASP.NET Core buildpack New as of: 12 July 2016 This buildpack makes the .NET Core V1.0 and .NET Core SDK V1.0 Preview 2 available in Bluemix. Existing RC2 apps will continue to work with this buildpack as long as you specify the correct SDK version in your global.json file.
buildpackなるものが.NET Core V1.0とPreview2で利用可能になった、と言っています。
でも、1.0.0-preview2-003121にしたのに動かないじゃん….
What is buildpack?
buildpackとは、まいち様によれば、
実行環境を構築するときの振る舞いを指定するもの。
とあります。
Cloud Foundryの公式ドキュメントでbuildpackの説明を見ると
Buildpacks provide framework and runtime support for your applications. Buildpacks typically examine user-provided artifacts to determine what dependencies to download and how to configure applications to communicate with bound services.
Buildpackはアプリケーションのためのフレームワークと実行環境のサポートを提供します。通常、Buildpackは、ダウンロードのための何に依存しているかを決定するため、境界のサービス群とやりとりするためにアプリケーションをどのように設定するか、ユーザーが提供するアーティファクト(訳注:おそらく開発者が作成したアプリや成果物全般)を調査します。
とのこと。一言で言うなら、ランタイムと私は理解しました。
なので、このbuildpackを更新すれば動く、と考えました。
公式でPreview2のbuildpackが利用可能になった、というのはbuildpackが登場しただけで、アプリの実行環境のbuildpackは最新ではないよ、ということなのでしょう。
buildpackを更新
.NET Coreのbuildpackはgithubで開発されていました。
README.mdに使い方(Usage)が書いてあります。
1 | cf push my_app -b https://github.com/cloudfoundry-community/dotnet-core-buildpack.git |
どうみても、cfって以前書いたCloud Foundry コマンドラインインターフェース (以下 CF CLI)です。
これを使えば、最新のbuildpackをgithubから引っ張ってきて更新してくれそうです。
なので、まずGithubからCF CLIをダウンロードします。これも前回書いたようにGithubにあります。
zipとインストーラがありますが、インストーラをお勧めします。
インストールはインストール先を指定するだけなので、省略。
インストール完了後、cfコマンドへのパスが通ります。
前述のcf.exeによるbuildpackの更新方法
1 | cf push <自分のアプリ> -b https://github.com/cloudfoundry-community/dotnet-core-buildpack.git |
を見ると、<自分のアプリ> が何を指すのかわかりません。
gitでクローンしたローカルフォルダなのか、Bluemix上のアプリのurlなのか。
なので、CF CLIを使った開発を見てみます。ダッシュボード上の「コーディングの開始」をクリックします。
遷移先で、CF CLIの使い方が書いてあります。
CF CLIの他にBluemix CLIなるものが必要な様子。
Bluemix CLI は、コマンド・ライン・インターフェースを介して、Bluemix 内のアプリケーション、仮想サーバー、コンテナー、およびその他のコンポーネントと対話するための一元化された手法を提供します。
また、特定の計算タイプと対話するときにも、Cloud Foundry、Docker、および OpenStack コミュニティーからコマンド・ライン・ツールを利用します。
Bluemix CLI は、これらのコミュニティー・ツールが使用されている場合の環境設定の操作に役立ちます。
なので、上記のコミュニティツール、この場合CF CLIがBluemixと対話するために必要な環境設定のサポートが必要なのでしょう。認証情報とか。
このツールをダウンロードします。インストーラしかないです。
Conclusion
長くなったので次回。