🚴🏻‍♀️

【AWS CodeBuild】AWSの基礎を学ぼう

5 min read

2021.09.18 Update

ブログを発表をしてからご指摘を頂戴したので、記事を追記・修正しています。
ご指摘ありがとうございます お名前を公開して良いのか判断が迷ったので、一旦公開せず進めます。

指摘1:Batch(バッチ) と Badges(バッジ)

バッチとバッジが文章で混在しているので、これを修正

指摘2:Badges(バッジ)のPATH不備

Badges(バッジ)が正しく画面表示されず悩んでいたのですが、
「codecommitのbranchをmainにするか、バッチのURLで指定しているmainの箇所をmasterにすれば表示されるとおもいます。」とご指摘を頂戴したので、これを対応。

CodeCommitの作成ブランチは「master」だが、CodeBuildのBadges(バッジ)有効化では「main」をデフォルトで指す、これにより正しいアドレスが取得出来ていないことが原因

概要

「AWS エバンジェリストシリーズ AWSの基礎を学ぼう」で”AWS CodeBuild のおさらい”のイベントに参加した感想ページです。

「AWS エバンジェリストシリーズ AWSの基礎を学ぼう」とは

AWS エバンジェリストシリーズ AWSの基礎を学ぼう

以下、Connpassページより引用

Amazon Web Services (AWS)は現在200を超えるサービスを提供し、日々サービスの拡充を続けています。
このAWS エバンンジェリストシリーズでは週次でAWSのサービスをひとつづつ取り上げながらその基礎を説明していく 初心者、中級者をターゲットとした講座です。午後の仕事前にスキルアップを一緒にしませんか?
注意点 登壇者による発表内容はアマゾン ウェブ サービス ジャパンとして主催しているものではなく、コミュニティ活動の一環として勉強会の主催を行っているものです。

毎週ありがとうございます!

整理

AWS CodeBuildって何?

https://aws.amazon.com/jp/codebuild/faqs
AWS CodeBuild は、クラウド内の完全マネージド型の継続的統合サービスです。CodeBuild では、ソースコードのコンパイル、テストの実行、デプロイ可能なパッケージの生成を行えます。CodeBuild では自分のビルドサーバーをプロビジョニング、管理、スケールする必要がありません。CodeBuild が自動的にスケールし複数のビルドを同時に処理するため、ビルドはキューで待機する必要がありません。CodeBuild のパッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することによりすぐに開始できます。CodeBuild の課金は、分単位です。

ビルドプロジェクトを作成する

プロジェクトの設定

プロジェクト名

任意

説明

任意

ビルドバッジ

ユーザーガイド
埋め込み可能なイメージ(バッジ)として動的に生成されるステータス画像
種類としては以下4点あり

  • UNKNOWN : 該当するブランチでプロジェクトがビルドをまだ実行していないか、まったく実行したことがありません。また、ビルドバッジ機能が無効になっている可能性もあります。
  • IN_PROGRESS : 該当するブランチで最新ビルドが進行中です。
  • PASSING : 該当するブランチで最新ビルドが成功しました。
  • FAILING : 該当するブランチで最新ビルドがタイムアウト、失敗、途中終了、または停止しました。

同時ビルド制限の有効化

AWS CodeBuild のクォータ
デフォルトのサービスクォータは60です。緩和申請を出していないのであれ1-60を選択することが可能。

ソース

ソースプロバイダ

「AWS CodeCommit」を選択、事前準備しています。

リポジトリ

任意

リファレンスタイプ

任意

ブランチ

任意

環境

環境イメージ

ビルドを行う環境のイメージ

オペレーティングシステム

Amazon Linux2

ランタイム

Standard というかこれ以外に選択肢はない

イメージ

aws/codebuild/amazonlinux2-x86_64-standard:3.0
最新を選択

イメージのバージョン

aws/codebuild/amazonlinux2-x86_64-standard:3.0-21.08.20
最新を選択

環境タイプ

Linux

特権付与

Dockerイメージを構築しないのでOFF

サービスロール

新しいサービスロール

ロール名

任意

Buildspec

ビルド仕様

buildspec ファイルを使用する

バッチ設定


・・・よう分からん
バッチ設定は以下、いずれかを設定するモノかと思ったけど、そういう設定もないしなぁ。。。

  • batch/build-graph : バッチ内の他のタスクに依存する一連のタスクを定義
  • batch/build-list : 並行して実行されるタスクの数を定義
  • batch/build-matrix : 並行して実行される異なる構成のタスクを定義

アーティファクト

タイプ

アーティファクトなし

ログ

CloudWatch Logs

ON

グループ名

任意・・・ログ名って悩む

ストリーム名

任意・・・ログ名って悩む

(作成後)設定

バッジURLのコピーは以下のような感じです。

https://codebuild.us-east-1.amazonaws.com/badges?uuid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&branch=main

これをCodeCommitのREADMEとして設定してみます。
ご指摘頂戴しましたが、バッジURLのデフォルトブランチは「main」を指します。CodeCommitで利用するブランチが「main」以外の場合には正しくデータが取得できないため、ブランチ名を合わせるようにして下さい。

buildspec.yml

CodeBuild のビルド仕様に関するリファレンス

buildspec.ymlに記載するのは以下です。

  • version : buildspecのVersion(必須)
  • run-as : BuildのLinuxユーザー
  • env : 環境変数
  • proxy : プロキシサーバ設定
  • batch : バッチビルド設定
  • phases : 実行コマンド(必須)
  • reports : テストレポート作成
  • artifacts : AWS CodeBuildの出力
  • cache : キャッシュ設定

サンプルでのbuildspec.yml

version: 0.2
phases:
  build:
    commands:
      - echo Build started on `date`

ビルド結果のログ


ビルドは正常終了

Badges(バッジ)は正常終了を意味する PASSING

buildspecにflake8を入れる

version: 0.2
phases:
  install:
    commands:
      - echo install started on `date`
      - pip show pip
      - pip install flake8
  pre_build:
    commands:
      - echo pre_build started on `date`
      - flake8 lambda_function.py || echo OK
  build:
    commands:
      - echo Build started on `date`


これもBadges(バッジ)は正常終了を意味する PASSING

Discussion

ログインするとコメントできます