こんにちは。エンジニアの井上です。
最近は500円くらいで中古のPS3用のゲームを買っては1日で飽きるのを繰り返しています。
さて前回は社内のスケジュールをChatworkで通知してくれるアプリを作ったんですが、これが会社のPCで動いててアプリ更新も完全に手動という弱点があります。
で、会社のPCというのも基本的にはつけっぱなしでもいいんですがビルの設備点検があったりするので電源を消してあげないといけないときがあります。当然その間はスケジュール通知はできないわけです。
というわけで、アプリをクラウドに載せた上で自動でデプロイしてくれる仕組みを作ってみようと思います。今回は環境構築の部分です。
構築
インスタンス立ち上げ
まあ、自分で作るアプリを動かすだけなので無料で利用できる範囲で行います。
AWSコンソールにログインしてEC2インスタンスを立てます。
インスタンスタイプはt2.micro、OSはUbuntu 18.04です。
このときにインスタンスに接続するための鍵を貰えるので大切に保管しましょう。
私は一回消してしまって泣きました。
あと私はなんとなくRoute53でドメインもとっておきました。1000円くらいの自腹です。
自分のドメイン取るの夢だったんですよね!
アプリ実行環境の構築
次にUbuntu上でアプリ実行の環境を作ります。
適当なターミナルでEC2に接続します。Powershellとかでもつなげますが、私は老人なのでTeraterm使います。
ここでさっきもらった鍵を使います。
前回作ったアプリは.NET Coreを使っているのでSDKを入れてあげます。
ここが参考になりました。
ubuntu@****:/$ dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.102
Commit: 573d158fea
Runtime Environment:
OS Name: ubuntu
OS Version: 18.04
OS Platform: Linux
RID: ubuntu.18.04-x64
Base Path: /usr/share/dotnet/sdk/3.1.102/
バージョン3.1.102が入ってるみたいです。よしよし
で、適当なディレクトリにGitHubからソースコードをcloneして、dotnetコマンドでpublishしてあげます。
ubuntu@****:~/apps/W2ScheduleNotifier$ dotnet publish -c Release
問題なくアプリを発行できたので実行してみます。bin/Release/netcoreapp3.1/publishに配置されるのでそのディレクトリ上でdotnetコマンドで.dllを指定してあげると動きます。
ubuntu@****:~/apps/W2ScheduleNotifier/Application.W2ScheduleNotifier/bin/Release/netcoreapp3.1/publish$ dotnet Application.W2ScheduleNotifier.dll
Jenkinsの構築
細かい手順は省きますが、Jenkinsはパッケージマネージャーからインストールできます。
ブラウザから、立ち上がっているインスタンスの8080番ポートにアクセスするとJenkinsにアクセスできます。EC2はデフォルトでは8080番が閉じてるので、インバウンドで許可してあげてください。
指定されているファイルにかかれている初期パスワードを入力するとJenkinsがアンロックされます。あとは言われたとおりポチポチ押していると使えるようになります!
まとめ
普段Windowsで開発やってるのでなかなかLinuxの扱いがなれていない面がありすこし手間取りましたが、なんとか構築まではできました。
次回は自動でデプロイできるようにJenkinsとGitを連携させます!
コメント