a2 Tech blog

試したこと・調べたこと・感じたことを発信するITエンジニアの日記です。仕事とは直接関係ないけど興味あることを模索していきます。

herokuとgithubの連携によるiPhoneでCI環境の実現

f:id:ninna2:20170409132859p:plain:w360

タイトルの通りなのですが、iPhoneだけでherokuにアプリケーションを継続的にデプロイしていきたいと思います。と言っても、難しいことは何もなくって、herokuとGitHubを連携して、GitHubへのPushが出来れば、iPhoneで修正したソースコードがそのままデプロイされるということです。

iPhone駆動開発とでも呼びましょうか。CIって大袈裟な表現してますが、ほとんど勝手にやってくれるので、特別なことは何もしません。便利な世の中になりましたね。それでは本編へ…

必要なもの

色々試行錯誤の結果、下記に落ち着きました。私が過去に紹介したものばかりです。多少、有償のものもありますが、良いものにはお金を払いましょう!もちろんiPhoneがいちばん高いですけどね。

ちなみにherokuじゃなくてAzureでも同じことはできると思います。AWSは調べてません。機会があればやってみます。

事前準備

herokuでアプリケーションサーバをあらかじめ構築することと、GitHubのアカウント登録とリポジトリの作成ぐらいはあらかじめ出来ているものとします。

herokuについては下記の過去記事を参考ください。

ninna2.hatenablog.com

iPhoneでWorking Copyを使ってGitHubを操作する方法についても、下記の過去記事に書いていますので参考にしてください。

ninna2.hatenablog.com

アプリケーションの準備

デプロイするアプリケーションがないといけないので、簡単なアプリケーションを何か作ってください。単純なHTMLだと配置しておしまいとかでデプロイの楽しみが何もないので、私はNode.jsでやります。過去記事で作成したソースコードの流用です。構成としては、index.js、package.json、Procfileで構成された"Helloworld"です。過去記事ばかりの参照ですが、下記に書きました。

ninna2.hatenablog.com

ソースコードの記述は、Textasticというエディタを使ってます。iPhoneBluetoothキーボードがあれば、お手軽コーディングが出来ます。

ソースコードGitHubで管理する

アプリケーションが出来たら、GitHubで管理しましょう。iPhoneGitHubクライアントとしては、Working Copyを使います。Textasticとの連携が秀逸なので、合わせて使うとなお良いです。今回用に、Helloworld-on-herokuというリポジトリを作成し、作成した3ファイルをPushしました。

ちゃんとPushしておいてくださいね。

herokuとGitHubを連携させて初回デプロイする

デプロイ対象のアプリケーションは作成できて、GitHubにも格納出来たので、heroku側の設定をして行きましょう。herokuにログインして、デプロイ先のアプリケーションサーバの設定をしていきます。

まず、デプロイソース(Deployment Method)の選択で、GitHubを選択します。(選択すると認証の確認がされたはず)

次に接続するRepositoryを指定します。私の場合は、helloworld-on-herokuというRepositoryです。

Automatic deploysという項目で、自動デプロイする対象のブランチの指定をして、“Enable Automatic deploys”で有効化します。

ここまで出来れば、herokuとGitHubの連携の設定は完了です。最後に、初回は手動でデプロイしておきましょう。Manual Deployでポチッとデプロイします。

動作確認としては、アプリケーションにアクセスすれば、"Helloworld"と出ます。

ソースコードを修正してCIしてみる

さて、全ては整いました。iPhoneだけでCIです。TextasticからWorking Copyでクローンしたソースコードをなんでも良いので修正します。Helloworldを書き換えましょうか。Hello CI!!とか…センスないですね。書き換えられればいいので今回はこれで許してください。

書き換えたら、Working Copyから、index.jsをCommitして、Pushします。本来は作業用ブランチを作成して、そこからマージしてって流れですが、masterへ直接Pushしてます。本当の開発ではちゃんとやりましょうね。

Pushすると、それに連動して、アプリケーションがデプロイされているはずです。ガンバってherokuさんが裏でゴニョゴニョしてるはず。

動作確認

だたRepositoryにPushしただけですが、果たしてアプリケーションはデプロイされているのか…動作確認です。アプリケーションの公開URLにアクセスしてみてください。

無事、変わりましたね。良かった。

これでiPhoneからGitHubにPushして、herokuにデプロイするというなんちゃってCI環境が整いました。明日からはiPhone駆動開発出来ますね。

そろそろiPhoneネタもなくなってきました。普通に開発しろよって感じでしょうか。少しでも皆さんの参考になれば幸いです。では。