7
4

More than 3 years have passed since last update.

[AWS][CI/CD]BitbucketからビルドしてS3への自動デプロイ

Last updated at Posted at 2020-12-25

CodePipelineを使ってBitbucketからS3への自動デプロイした手順の忘備録。
あとソースファイルがGitHubでもデプロイ先がEC2でもそんなに手順変わらないと思う。

公式のチュートリアル↓
チュートリアル 使用するパイプラインを作成する Amazon S3 導入プロバイダーとして - AWS CodePipeline

事前準備

  • Bitbucketレポジトリの作成
  • S3バケットの作成

CodePipelineの作成

CodePipelineにアクセスしてパイプライを作成をクリック

サービス > CodePipeline へアクセス
リージョンを東京に選択したのち、パイプラインを作成をクリックする。
(ここでリージョンを選択し忘れて再作成したら、ロールのリージョンが違って権限拒否されたりして酷い目にあった・・・)
スクリーンショット 2020-12-25 17.43.58.png

パイプラインの設定を選択する

パイプライン名を入力する。
それ以外はデフォルトで次に。
スクリーンショット 2020-12-25 17.45.52.png

ソースステージを追加する

Bitbucketを選択すると、以下のような画面が表示される。
Bitbucketに接続をクリック。
スクリーンショット 2020-12-25 17.17.47.png

Bitbucketに接続する

接続名を入力して、Bitbucketに接続をクリック。
スクリーンショット 2020-12-25 17.56.21.png
ローディング表示がされないけど(多分バグだと思う)、しばらく経つと次の画面に行く。

スクリーンショット 2020-12-25 17.56.46.png
新しいアプリをインストールするをクリック。

新しいアプリをインストールする

接続したいワークスペース管理者の名前を選択して、アクセスを許可するをクリック。
(ワークスペース管理者じゃないとリポジトリ接続できない)
スクリーンショット 2020-12-25 17.58.16.png

前の画面に戻るので、必要な情報を入力する。
リポジトリ名に候補が表示されない場合、手打ちで入力すると接続できたりする。(しばらくこれに気づかなくて試行錯誤してた・・・)
スクリーンショット 2020-12-25 18.03.01.png

次にをクリック。

ビルドステージを追加する

※特にビルドするものがない場合、ビルドステージはスキップできる。

AWS CodeBuildを選択すると、以下のような画面が表示される。
プロジェクトを作成するをクリック。
スクリーンショット 2020-12-25 18.04.51.png

CodeBuildの作成

プロジェクト名を入力する。
スクリーンショット 2020-12-25 18.07.45.png

ビルドを実行するためのイメージを選択する。
OSは執筆時点でAmazon Linux2とubuntuが選べる。好きなの選べばいいと思う。
スクリーンショット 2020-12-25 18.09.00.png

それ以外はデフォルト。

スクリーンショット 2020-12-25 18.11.19.png
スクリーンショット 2020-12-25 18.11.30.png

CodePipelineに進むをクリック。
すると前の画面に戻るので次にをクリック。

デプロイステージを追加する

Amazon S3、リージョン、バケットを入力してデプロイする前にファイルを抽出するをチェックする。(これをチェックしないと展開されずにzipファイルが出力されてしまう)
次にをクリック。
スクリーンショット 2020-12-25 18.15.24.png

確認画面が表示される。
パイプラインを作成するをクリック。
スクリーンショット 2020-12-25 18.17.29.png

ビルド&デプロイしてみる

ビルド設定ファイルの作成

ビルドのための設定ファイルbuildspec.ymlをプロジェクトのルートディレクトリに作成する。
記事では省略したけど、実際にはCloudFrontも使ってたのでディストリビューションのキャッシュ削除の処理を入れた。

ファイルの書き方は一般的なCI設定と同じような感じ。
artifactsでデプロイしたいファイルを指定する。今回は全てのファイル。
環境変数はAWSコンソールのCodePipelineもしくはCodeBuildの画面から設定できる。

buildspec.yml
version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - aws cloudfront create-invalidation --distribution-id ${DISTRIBUTION_ID} --paths "/*"
artifacts:
  files:
    - '**/*'

リモートリポジトリにPush

上記をコミットしてGitbuketのリモートリポジトリにgit pushする。

デプロイされているかを確認

CodePipeline へアクセスし、履歴を確認する。
スクリーンショット 2020-12-25 18.57.59.png

成功したら、S3へデプロイされているか確認。

スクリーンショット 2020-12-25 18.58.57.png
OK。

これでgit pushするたびにビルド&デプロイされるようになります。

おしまい。

追記

なんか情報少ないなーと思ったら、2020/11に機能追加したばっかりだったみたいです。
AWS CodeCommit の AWS CodePipeline ソースアクションで git クローンのサポートを開始

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4