APPENDIX: sast_buildspec.yaml の詳細

コードベースをSonarQubeに対してチェックするようにCodeBuildにどのように指示したのか疑問に思っていますか?

flask-app フォルダの下にあるsast_buildspec.yaml という名前のファイルをチェックすると、それを可能にするために書かれたCodeBuild buildspecが表示されます。

sast-buildspec

私たちの SAST CodeBuild プロジェクトはこのファイルを探し、必要なコマンドを実行します。

version: 0.1

phases:
  pre_build:
    commands:
      - echo Installing SAST Tool...
      - wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
      - unzip sonar-scanner-cli-4.6.2.2472-linux.zip
      - mv sonar-scanner-4.6.2.2472-linux /opt/sonar-scanner
      - chmod -R 775 /opt/sonar-scanner
  build:
    commands:
      - echo Build started on `date`
      - /opt/sonar-scanner/bin/sonar-scanner -Dsonar.sources=. -Dproject.settings=sonar-project.properties -Dsonar.host.url=$SONARQUBE_URL -Dsonar.login=$SONARQUBE_ACCESS_TOKEN > sonarqube_scanreport.json
      - echo Build complete on `date`

Buildspecs は、CodeBuild がビルドを実行するために使用するビルドコマンドと関連設定の集まりです。それでは、各セクションを順を追ってみましょう。

  • pre_build コマンドは、基本的にビルドの準備を実行する場所です。この場合、CodeBuild に sonar-scanner-cli をインストールするように指示しています。これにより、CodeBuild はコード解析を実行できるようになります。
  • build コマンドは、sonar-scanner-cli を使用してスキャンの実行を定義します。sonar-project.properties という名前の別のファイルを探して参照します。このファイルには、必要な設定 (つまり、スキャンするソースの場所、除外されたファイルなど) が含まれています。

    実行時に CodeBuild の依存関係をインストールすると、非効率で時間がかかる場合があります (つまり、sonar-scanner-cli.zip は 41.1 MB です)。依存関係が既に焼き付けられていて、ビルドを高速化するための準備が整った独自のカスタム CodeBuild イメージを作成することもできます。また、デフォルトの CodeBuild イメージの機能をさらに拡張するためにこれを行うこともできます。参照:カスタムビルド環境

$ プレフィックスで示される環境変数がいくつかあります。これは、ビルドプロジェクトが実行されるたびに AWS CodeBuild によって定義および提供されます。これは、codebuild-docker-project の [ビルドの詳細] タブの環境変数 セクションで確認できます。CodeBuildの 組み込み環境変数 も使用できます (例.$AWS_DEFAULT_REGION)。