開発チームがCI経験不足であるため、インフラ側でCI構成の検討も必要になった。
上記のような方向けに以下の通りにまとめました。
- CI (Continuous Integration)とは何か、その基本概念と重要性
- AWS CodeBuildの概要
- 1時間でできるCIパイプラインの構築体験
- 自動ビルド・自動テストの概要
本記事を読むことで開発知識が不足しがちなAWSインフラエンジニアがCI構成の設計に挑む前に基礎知識を押さえておくことができます。
筆者はインフラエンジニア歴10年以上です。
AWS案件は上流から下流まで幅広く対応してきました。
DevOps関連知識についての詳細は以下に記載しております。
https://github.com/toma1110/cv
CI設計基礎知識習得方法まとめ(codebuild)
CI (Continuous Integration)とは何か、その基本概念と重要性
codebuildを学ぶ前にCIの目的やCIでやるべきことを理解します。
JAVAでCIツールを使い始める前に学んでおくべきこと3点は以下の通りです。
※JAVAを例にまとめましたが、JAVA以外でも大体同じです。
CIの目的
設計、構築、テスト、リリースの時間短縮
CIに必要なツール
ソースコードリポジトリ(CodeCommit)、アーティファクトリポジトリ(CodeArtifact)、ビルドツール(Maven、CodeBuild)、テストツール(JUnit)
CIの自動テストの重要性
動かないプログラムを登録すると全員に迷惑がかかる
以下の動画が参考になりました。
【初級】CI/CDの解説(三菱UFJインフォメーションテクノロジー#1)
AWS CodeBuildの概要
codebuildの概要を学ぶ場合、以下の3リソースが役立ちます。
codebuildを学ぶにはここをみればOK!
AWS再入門ブログリレー2022 AWS CodeBuild編
CodeBuildの全体像と使い方が10分で掴める良動画(日本語字幕)
Introduction to AWS CodeBuild (Japanese) (Sub) 日本語字幕版(動画10分)
最新バージョンのイメージを利用しないとビルドが遅くなる!
AWS CodeBuild のビルド環境に利用するコンテナイメージについて
毎回待つなと思ってたので、この知識は重要だと思う。。
一回検討だけでもした方が良さそう。
1時間でできるCIパイプラインの構築体験
CodeBuildだけを学びたい場合、
CI/CD on AWS ワークショップの「Lab 3: 継続的インテグレーション」が良いです。
「早送り」があるので、それまでの事前準備などが不要でCodeBuildだけを学ぶことができます。
「早送り」実行メモ
$ curl -s -L ‘https://static.us-east-1.prod.workshops.aws/public/5101485f-ab63-4a06-a5c3-42294f3087f5/static/fastForward/typescript/fastForwardtoLab3.sh’ | bash
Visit https://docs.aws.amazon.com/cloud9/latest/user-guide/move-environment.html#move-environment-resize to resize environment
https://docs.aws.amazon.com/cloud9/latest/user-guide/move-environment.html#move-environment-resize
$ chmod +x resize.sh
※resize.shはデフォルトの20GBと足りないため、30GBで実施します。
※Cloud9のデフォルトは10GBで初期作成時に指定する方法はありません
$ ./resize.sh
$ curl -s -L ‘https://static.us-east-1.prod.workshops.aws/public/5101485f-ab63-4a06-a5c3-42294f3087f5/static/fastForward/typescript/fastForwardtoLab3.sh’ | bash
これでCodeCommitなどの前提リソースが作成され、Lab3から始めることができます。
CDKは分かっておいた方が良いかも。。
テストレポートがきれいに出るのは知らなかった。(今度機会があれば提案してみたい)
後片付けはCloudFormationのスタック削除とCloud9の削除を実施すればOKです。
自動ビルド・自動テストの概要
自動ビルドや自動テストは開発担当範囲ですが、
開発側に方針が無い場合などに、概要だけでも知っていると良いです。(※)
※間違った方向に行かないように(専門家ではないので私は自信なさげになってしまいましたが)アドバイスできたりします。
自動ビルド
・JAVAビルドツール入門
この本の序章(著者に申し訳ないですが、、序章だけなら無料で読めます)を読んだだけで今まで意味が分からなかったmavenなどの役割が理解できます。
Mavenのようなライブラリを保管するリポジトリをプライベートネットワーク内に持ちたい場合は
インフラ側でリポジトリ構築することになると思います。(CodeArtifactが必要)
Mavenセントラル利用する方針であればリポジトリの用意は不要です。
自動テスト
JUnitはUnitってつくくらいだから単体テスト用なのかと思ったけど、DB接続が必要な試験が含まれていたりして、どこまでを自動テストでやるべきか悩んでいました。
@yoshitaro_yoyoさんの記事を読むことで未熟ながらも何となく考え方を理解できました。
JUnitで学ぶ実践的で本質的なユニットテストの考え方
https://qiita.com/yoshitaro-yoyo/items/5d52e3502b3a3dd58785
まとめ
急にCI設計をしなければならなくなり、開発知識に苦手意識を持つ自分がキャッチアップした方法を纏めました。
参考になれば幸いです。
コメント