AWS CodeBuild への導入方法 (v2.3以降)

  • Post author:
  • Post last modified:2022-01-21
  • Post category:Uncategorized
  • Reading time:1 mins read

AWS CodeBuild に Sider Scan を導入する方法について記述します。

前提条件

まず、AWS のアカウントを持ち、CodeCommit でコード管理を行い、CodeBuild, CodePipeline を使用し CI/CD を使用していることが条件となります。また、Sider Scan のアーティファクトの保存読込のため、S3 のバケット作成とアクセス権限も必要となります。

また、Docker Hub から CodeBuild への image pull は制限があり、Docker Hub のアカウントも必要となります。

ビルドプロジェクトの作成

ビルドの環境は上図のように設定します。新しい環境イメージはマネージド型イメージ、オペレーティングシステムは Ubuntu、ランタイムは Standard、イメージはデフォルトのもの、環境タイプは Linux を選びます。Docker を使用するため、特権付与をお願いいたします。Docker アカウントの環境変数 $DOCKERHUB_USERNAME, $DOCKERHUB_PASSWORD の追加もお願いいたします。

S3は、解析結果とそのレポートの保存のために使用します。まず、Sider Scan 用のバケットをご用意ください。下記の Buildspec で、環境変数 ${S3のバケット名}、${S3の公開URL} が必要となりますので設定してください。注意点として、下記の設定のレポートは誰でもアクセスできる状態です。

ビルド詳細内の Buildspec は次のように設定します。

version: 0.2

phases:
  install:
    commands:
       - echo $DOCKERHUB_PASSWORD | docker login -u $DOCKERHUB_USERNAME --password-stdin
       - docker image pull sider/sider_scan_runner:latest
  pre_build:
    commands:
       - aws s3 cp s3://${S3のバケット名}/${リポジトリ名}/output.radump ./
    on-failure: CONTINUE
  build:
    commands:
       - |
        cat << JSON > .siderscan.json
        {
          "report": {
            "mail": {
              "to": ["scan-dev@siderlabs.com"],
              "useBuiltInProvider": true
            }
          },
          "scan": {
            "result": {
              "url": "${S3の公開URL}/${リポジトリ名}",
              "outputDirectory": "/target/scan_result/"
            }
          },
          "enableSiderScanTracing": {
            "userEmail": "scan-dev@siderlabs.com"
          }
        }
        JSON
       - docker run --rm -v $(pwd):/target -w /target sider/sider_scan_runner:latest sider run /target
  post_build:
    commands:
       - aws s3 sync scan_result s3://${S3のバケット名}/${リポジトリ名}/scan_result/${CODEBUILD_BUILD_NUMBER}/ --acl public-read
       - aws s3 cp output.radump s3://${S3のバケット名}/${リポジトリ名}/output.radump

Sider Scan は実行に大きな時間がかかり、特に成熟した大きなプロジェクトでは1時間以上実行にかかることもあります。CodeBuild のデフォルトのタイムアウトは8時間ですが、もしそれ以上かかることがあれば、タイムアウトの設定をお願いいたします。

より高度な設定

Sider Scan 自体の コマンドオプションや設定ファイルの詳細に関しては Sider Scan の高度な設定ドキュメントを参照下さい。

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.