Briswell Tech Blog

ブリスウェルのテックブログです

AWS CodePipelineを使用してAWS Beanstalkにデプロイする方法

こんにちは。ブリスウェルのSonです。
今回は、GitHubからAWS Beanstalkにアプリケーションをデプロイする方法を紹介します。

AWS Beanstalkは、アプリケーションを簡単で早くデプロイおよび管理するためのサービスです。 AWS CodePipelineは、コードを継続的に配信およびデプロイするためのサービスです。

前提条件


1. GitHubトークンの作成

まず、AWS CodePipelineでGitHubリポジトリを使用するために、GitHubからトークンを作成する必要があります。このトークンがbuildspec.ymlファイルで使用されます。トークンを持っている場合は、このステップをスキップができます。

GitHubのアカウントでログインし、Settings > Developer settings > Personal access tokensに移動します。「Generate new token」をクリックして、アクセス許可を与えるためのトークンを作成します。このトークンを取得しておいてください。


2. AWS CodePipelineのセットアップ

AWSコンソールにログインし、「AWS CodePipeline」を選択して、「パイプラインを作成する」ボタンをクリックします。


3. ソースステージの設定

次の画面で、パイプラインに名前を付けます。「次に」のボタンをクリックします。


「ソースステージを追加する」の画面でソースプロバイダーで「GitHub バージョン 2」を選択します。GitHub アプリ接続を選択します。作成していない場合は作成するための「GitHub に接続する」ボタンをクリックします。



次に、デプロイするためのリポジトリとブランチ名を選択します。ここでは、「feature/pipeline」を使用します。ご要望に応じて、「master」や「develop」等のブランチを使用ができます。


4. CodeBuildプロジェクトの設定

CodePipelineは、ソースステージからソースを取得した後、CodeBuildプロジェクトを実行します。

「ビルドステージを追加する」の画面で「AWS CodeBuild」を選択します。 次に、プロジェクト名を選択します。プロジェクトがない場合はプロジェクトを作成するために、「プロジェクトを作成する」ボタンをクリックします。
当画面でデプロイ用の環境変数を設定ができます。


5. デプロイの設定

「デプロイステージを追加する」の画面でデプロイプロバイダーでAWS Elastic Beanstalkを選択して、アプリケーション名、環境名を入力します。


6. レビュー

レビューの画面で設定した情報を確認します。全部の情報はOKだったら、「パイプラインを作成する」のボタンをクリックします。


7. buildspec.ymlの設定

ソースコードのRootフォルダーでbuildspec.ymlファイルを作成します。

version: 0.2

phases: install: runtime-versions: nodejs: 16 commands: - npm -v - yarn -v - npm config set //npm.pkg.github.com/:_authToken=YOUR_PRIVATE_TOKEN
pre_build: commands: - yarn - yarn run check
build: commands: - yarn build

artifacts: files: - '*/'

cache: paths: - 'node_modules/*/**'

このbuildspec.ymlファイルは、AWS CodeBuildのビルドプロジェクトで使用するために使用されます。ビルドプロセスの3つの段階が定義されており、それぞれにコマンドが含まれています。

最初の段階は、「install」です。この段階では、Node.jsランタイムバージョン16を使用し、npmとyarnのバージョンを表示し、作成した「YOUR_PRIVATE_TOKEN」を設定するnpmコマンドを実行します。

次の段階は、「pre_build」です。この段階では、yarnコマンドを使用して必須なパッケージをインストールし、「yarn run check」コマンド等で解析ツールを実行してコード品質を確認します。

最後の段階は、「build」です。この段階では、「yarn build」コマンドを使用してアプリケーションをビルドします。

「artifacts」セクションでは、すべてのファイルがアップロードされるように、ワイルドカードを使用しています。

最後に、「cache」セクションでは、キャッシュされるファイルのパスが指定されています。ここでは、node_modulesディレクトリ以下のすべてのファイルがキャッシュされます。

* 詳しく設定については下記リンクを参照してください。
CodeBuild のビルド仕様に関するリファレンス - AWS CodeBuild


8. 終わりに

テストするために、ちょっとソースを修正して、GitHubへ「feature/pipeline」をプッシュします。実行が成功すると、下記の表示となります。

Pipelineの基本的な機能紹介は以上となります。間違い等がありましたら、コメントお願いします。

ご覧いただきありがとうございました。