LoginSignup
2
2

More than 3 years have passed since last update.

BitbucketのJavaScriptプロジェクトをビルドしてS3にデプロイする

Posted at

React.jsなどのSPAアプリケーションをBitbucket Pipelineを使ってS3にデプロイします。割とBitbucketが好きです。

用意

S3へのデプロイIAMユーザーを作成

IAM > ユーザー > 認証情報 > アクセスキー からアクセスキーを作成し、アクセスキーIDとシークレットアクセスキーをメモしておきましょう。ここではs3-deploy-userとしておきます。

S3のバケットを作成

なんでも良いです。ここではdeploy-bucketとしておきます。
バケットポリシーを設定し、s3-deploy-userでbucketを更新できるようにします。

policy
    {
        "Version": "2012-10-17",
        "Id": "Policy**********",
        "Statement": [
            {
                "Sid": "Stmt**********",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::*********:user/s3-deploy-user"
                },
                "Action": "s3:*",
                "Resource": "arn:aws:s3:::deploy-bucket/*"
            }
        ]
    }

Bitbucket Pipelineの設定

bitbucket-pipeline.ymlの作成

masterへのマージを契機にs3へのデプロイを実行します。

bitbucket-pipeline.yml
    pipelines:
      branches:
        master:
          - step:
              name: Build
              image: node:10.15.3
              script:
                - yarn
                - yarn build
              artifacts:
                - dist/**
          - step:
              name: Deploy
              script:
                - pipe: atlassian/aws-s3-deploy:0.3.2
                  variables:
                    AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
                    AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
                    AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
                    S3_BUCKET: $S3_BUCKET
                    LOCAL_PATH: "dist/"

最初のステップでビルドを実行し、ビルド結果をartifactsとして次ステップで利用できるようにします。S3へのアップロードにはatlassianで用意されているpipeを利用します。アクセスキーやS3バケットの指定は環境変数で設定します。

Bitbucketのリポジトリ > Deployment の設定にてvariablesの設定を行います。用意しておいたアクセスキー等を設定すればいいです。

variablesの設定

後はmasterをpushするか、プルリクエストからマージを行えばS3へのデプロイが実行されます

参考

2
2
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
2
2