LoginSignup
1
0

More than 1 year has passed since last update.

Elastic BeanstalkにSwagger UIをBitbucket Pipelinesでデプロイする

Last updated at Posted at 2022-03-15

物理サーバに置いていたSwagger UIをAWSに移した記録です。
ついでにドキュメントを更新したらBitbucket Pipelinesでデプロイまでやってくれるようにしました。

Elastic BeanstalkにSwagger UIを置く

環境作成

Beanstalkの環境をDockerプラットフォームで作成します。
その他の設定はお好みで。

docker-compose.ymlの用意

docker-compose.yml
version: "3"
services:
  swagger:
    image: swaggerapi/swagger-ui
    container_name: swagger-ui
    volumes:
      - ./foo.yml:/usr/share/nginx/html/foo.yml
      - ./bar.yml:/usr/share/nginx/html/bar.yml
    environment:
      URLS: "[{url:\"foo.yml\",name:\"FOO\"},{url:\"bar.yml\",name:\"BAR\"}]"
      URLS_PRIMARY_NAME: "FOO"
      QUERY_CONFIG_ENABLED: "true"
    expose:
      - "80"
    ports:
      - "80:8080"

余談

environmentでURLSを書いておくと検索バーがリストに変わって、ymlが複数あるときに便利です。
Screen Shot 2022-03-15 at 10.33.54.png
Screen Shot 2022-03-15 at 10.29.55.png
またQUERY_CONFIG_ENABLEDをtrueにしておくと、クエリパラメータで?urls.primaryName=BARのように指定することでそのドキュメントのページに飛べるようになります。
(参考)Swagger UI Configuration

デプロイ

docker-compose.ymlとドキュメントのyamlをBeanstalkにデプロイするとブラウザで見られるようになります。

Bitbucket Pipelinesでデプロイ

Beanstalkデプロイ用のユーザを作成する

AWSで適切な権限(Beanstalkにデプロイできる権限を付けたら)を付けたユーザを作成してACCESS_KEY_IDとSECRET_ACCESS_KEYを取得しておきます。

Pipelines有効化

Repository settings > PIPELINES - Settings > Enable PipelinesをOnにする。

bitbucket-pipelines.ymlの用意

bitbucket-pipelines.yml
image: atlassian/default-image:3

pipelines:
  branches:
    main: # このブランチにpushやmergeなどがあるとパイプラインが実行される
      - step: # デプロイする対象のファイルをzipする
          name: 'Zip Application'
          script:
            - zip application.zip docker-compose.yml foo.yml bar.yml
          artifacts:
            - application.zip
      - step: # zipしたファイルをBeanstalkの環境にデプロイする
          name: 'Deploy to Beanstalk'
          script:
            - pipe: atlassian/aws-elasticbeanstalk-deploy:1.0.2
              variables:
                AWS_ACCESS_KEY_ID: '$AWS_ACCESS_KEY_ID'
                AWS_SECRET_ACCESS_KEY: '$AWS_SECRET_ACCESS_KEY'
                AWS_DEFAULT_REGION: '$AWS_DEFAULT_REGION'
                APPLICATION_NAME: '$APPLICATION_NAME'
                ENVIRONMENT_NAME: '$ENVIRONMENT_NAME'
                ZIP_FILE: 'application.zip'
                S3_BUCKET: '$S3_BUCKET' # zipファイルをアップロードするバケット名
                WAIT: 'true' # デプロイが完了するまで待つかどうか

(参考)Elastic Beanstalk を使用して AWS にデプロイする

環境変数の設定

Repository settings > PIPELINES - Repository Variablesでbitbucket-pipelines.ymlに書いた環境変数の設定をします。

Pipelinesの実行

用意したbitbucket-pipelines.ymlをリポジトリにプッシュすればPipelinesが実行されるようになります。

以上です。

1
0
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
1
0