Jenkinsでyarn buildを試してみよう
Jenkinsのインストールが完了し、CD設定のためにまずNodejsプラグインをインストールしました。
Nodejsプラグインの設定
- プラグインをインストールして再起動した後、Global Tool Configurationに移動してプラグインの設定を行います。
- NodeJS項目で適当な名前を付け、NodeJSのバージョンを選択します。
- yarnを使用するため、yarnも追加します。
パイプラインプロジェクトの作成
- 新しいパイプラインプロジェクトを作成し、Gitと連携します。
- Project URLにGitHubリポジトリのアドレスを入力します。
- ビルドトリガーの設定で、GitHub hook triggerにチェックを入れます。
- Pipeline script from SCMを選択し、リポジトリURLにはGitHubリポジトリのHTTPS URL(.gitで終わるアドレス)を入力します。
- ビルドトリガーを設定するブランチを選択します。
パイプラインスクリプトの作成
ビルドまでのパイプラインテキストを作成し、保存してからビルドを実行してみましょう(JenkinsfileをGitHubにプッシュ)。
問題発生:ビルドが終わらない
このように実行したところ、Jenkinsが非常に遅くなり、ページの読み込みができなくなりました。e2-microのパフォーマンスが低いためだと思いましたが、3〜4時間経っても接続できませんでした。
メモリ不足が原因?
GCPのe2-microのメモリが1GBしかないため、メモリ不足が原因ではないかと考え、メモリスワップの設定を試してみました。AWSの公式サイトでも紹介されていました。
スワップファイルを使用してAmazon EC2インスタンスのスワップスペースにメモリを割り当てる
メモリスワップの設定手順
-
ルートにスワップファイルを作成
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32 // bsはブロックサイズ // countはブロック数、ここでは4GB割り当て
-
スワップファイルの権限を変更
$ sudo chmod 600 /swapfile
-
Linuxスワップ領域を設定
$ sudo mkswap /swapfile
-
スワップスペースにスワップファイルを追加
$ sudo swapon /swapfile
-
プロセスが成功したか確認
$ sudo swapon -s
-
/etc/fstabファイルを編集して起動時にスワップファイルを開始
$ sudo vi /etc/fstab
最後の行に以下を追加
/swapfile swap swap defaults 0 0
これらの手順を実行した後、free
コマンドで確認するとスワップメモリが割り当てられていることが確認できます。
問題解決!
これでビルドを実行すると、遅いですが正常に終了することが確認できました。AWS EC2 t2.microでも同様の症状が発生するため、VPCのスペックを上げるか、このようにスワップメモリを設定することで解決できます。