dockerfileの旅 その1 〜コードレビュー〜


なぜこの記事を書いているのか

最初は、とりあえずコンテナをVPCで動かしたい!というところから始まったのですが、
Cacooで構成図を書いている内にどんどん登場人物が多くなリまして・・・。
dockerfileがイメージになり、コンテナになり、AWS上のクラスタにデプロイされて、様々なサービスたちと通信する。
そんな図を見ているとdockerfileが旅をしているように見えてきて、なんとなくアウトプットしたくなったのです。

全体構成図(赤枠が本記事の対象)

今回の旅程

登場するリソース

  • ローカル開発環境
    • 構成図上の名前:Local develop environment
  • Webアプリのdockerfile
    • 構成図上の名前:webapp dockerfile
  • Webアプリのソースコード
    • 構成図上の名前:webapp source files
  • タスク実行アプリのdockerfile
    • 構成図上の名前:taskapp dockerfile
  • タスク実行アプリのソースコード
    • 構成図上の名前:taskapp source files
  • CodeCommit
  • CodeGuru Reviewer

1-1 プルリクエスト

ローカル開発環境でエンジニアが生み出した2つのアプリケーション。
一つはPythonで書かれたWebアプリケーション。
もう一つはこれまたPythonで書かれた、タスク実行を行うアプリケーション(定期バッチ処理などを想定)でした。

この2つのアプリケーションはdockerコンテナで動かすことが想定されていたため、
エンジニアはそれぞれのアプリケーションにdockerfileを作りました。

ソースが書けて、ローカル開発環境でのテストも終わったので、エンジニアはCodeCommitリポジトリにプルリクエストを送ります。

1-2 Amazon CodeGuru Reviewerによるレビュー

CodeCommitリポジトリには、あらかじめ Amazon CodeGuru Reviewer が紐付けてあリました。
CodeGuru Reviewerは、AIの力を使ってソースコードレビューを行い、レビュー結果や推奨される対応をプルリクエストのコメントに書き込んでくれます。
CodeCommitだけでなく、GitHub・BitBucketなどのリポジトリにも対応。GitHub Actionsとの統合もできるそうです。

レビューのコメントへの対応が終わった後、次にエンジニアが行うのはmainブランチへのマージです。

今回はここまで。次回へつづく・・・
(構成図を書くのに8時間くらい費やして力尽きたというのは内緒🙄)

付録 : CloudFormationテンプレートのサンプル

リソース:AWS::CodeGuruReviewer::RepositoryAssociation

AWSTemplateFormatVersion: '2010-09-09'

Description: CodeGuru Reviewer Repository Association

Resources:
  MyRepositoryAssociation:
    Type: AWS::CodeGuruReviewer::RepositoryAssociation
    Properties:
      Name: my-repository # <- ※1
      Type: CodeCommit # <- ※2

Outputs:
  MyRepositoryAssociationAssociationArn:
    Value: !GetAtt MyRepositoryAssociation.AssociationArn
  • ※1
    • ここに、紐つけるCodeCommitのリポジトリ名を入れる
  • ※2
    • CodeCommitの他には、Bitbucket・GitHubEnterpriseServer・S3Bucketがある
      • 選んだTypeによっては、プロパティの追加が必要になる