Jenkins上でテスト結果を見られるようにするには少し手間をかける必要があります。CodeBuildではビルドの成果物をS3にアップロードすることができるので、JUnitのテスト結果レポートをアップロードさせてから、Jenkinsのワークスペースにダウンロードして対応します。buildspec.ymlが必要になります。等も必要ですが、説明は割愛します。大体以下のような感じです。Docker)にしました。twice.」という記事を書かれていて、「実際どうなのよ?」という疑問もありましたが、ひとまずよしとしました。Redisをコンテナとして起動するためです。Redisを使いたい、という方法の検討にあたり、以下の3つのパターンで迷いました。Redisパッケージをインストールする。『全部入り1コンテナ』パターンランタイムとして、全てインストール済みのイメージを利用する。最終的に『複数コンテナ』パターンを選択しました。流用可能で無駄がないことです。作ったら、これを使ってイメージを作成し、ECRにプッシュします。CLIで行ってもかまいません。ECR」を参照してください。Pluginをインストールします。Managerから行えます。ちなみに、以前はソースコードからビルドしてインストールが必要だったみたいですね。利用したバージョンは0.9です。以下のようにしました。buildステージCodeBuildのビルドを開始します。reportステージCodeBuildのビルドが完了して、アップロードされたS3上の成果物をダウンロードし、レポート出力します。上でのハードコードを避けています。上記の例では、sourceVersionとしてmasterを指定しています。これは、リポジトリのmasterブランチをビルド対象とすることを意味します。こちらもビルドパラメータとして渡した方が融通が利くでしょう。CodeBuildではビルドを開始する時のパラメータとして、ビルドの対象にするブランチやコミットIDを指定できます。Versionと呼んでいます。形式であったり、ある程度柔軟に解釈をしてくれるようです。Syntaxを参照してください。実行して、必要なコンテナを起動します。このタイミングでDBやRedisが立ち上がります。使い、最新のスキーマに更新します。buildフェーズテストとパッケージング(jarファイルの作成)を行います。上記の各種ファイルを用意し、GitHubリポジトリにpushしたら、あとは、成果物のアップロード先であるS3バケットと、CodeBuildプロジェクトを作成して仕込みは完了です。ECR」から、作成したイメージを選択するようにします。Jenkinsのジョブを実行!いよいよ、ジョブを作って実行します。うまくビルドが成功すれば、ジョブの画面からJenkins利用者におなじみのテスト結果が見られるはずです。テスト結果のRSSフィードやSlackNotificationPluginを利用して結果をSlackに連携するのもおすすめです。Dashboard」というメニューが追加され、Jenkins上からCodeBuildのビルド結果が確認できるようになります。記述に間違いがないかを確認し、Jenkinsビルドのコンソール出力やCodeBuildのログを元に原因を修正していってください。私が試した時は、ECRをpullする権限が不足していて、ビルドに失敗することがありました...。おわりに後日談というか、今回のオチ。結果的にパフォーマンス効率性ってどうなった?かというと、ビルド時でもJenkinsマスターのCPU使用率は数%で収まるようになりました!しかし一方で、ビルド時間については、約6分→約10分と、大幅に増えてしまいました...。clone、CodeBuildで走らせるためのプロビジョニング、依存関係のあるライブラリのダウンロードを毎回行っているところが原因なようです。(Gradleのキャッシュディレクトリ)に展開する、みたいなお膳立てが必要になるかもしれません。そんなわけで、若干の課題はあるものの、CodeBuildを試した感触ですが、ビルドに特化しており機能がシンプルな分、学習コストは低い印象でした。CodeBuildに入門失敗した話」にもあるように、ビルド対象のブランチが指定できなかったり、色々癖はあったみたいですね。その頃から比べると大分よくなったと言えるでしょうし、これからもどんどん便利になっていくでしょう。東京リージョンにも来ていますし、実際にプロジェクトで導入しても問題なさそうな手応えを感じました。一方で、今回紹介した内容はまだまだ発展途上なやり方かなーという気もしています。「もっとよいやり方あるんじゃね?」という方は、お気軽にコメントください。*1:ちなみに、1つのリポジトリにbuildspec.ymlは1つしか持てない、ということではありません。いうオプションが用意されています。codeで判定しているだけっぽい...?*3:ちょっとややこしいですが、JenkinsとCodeBuildでリポジトリの設定は別々であり、CodeBuild側でもコードのチェックアウトを行なうので、Jenkins側で必要なのは全コードではなくJenkinsfileだけです。Jenkins用とCodeBuild用でリポジトリを分けるのも不便なので、全体をチェックアウトするようにしています。実行するには技術開発室の佐藤です。ユニットテストするにはエンジニアの佐藤です。(12/4)みなさんこんにちは。技術開発室の岡田です。3はじめまして、CI事業部の金子です。専門知識に合格しました月別アーカイブはてなブログをはじめよう!flect_techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。