【登壇】AKIBA.AWS #14 AWS Update LT大会 Code Seriesのアップデートについて #akibaaws
こんにちわ。Caps Lock
をCtrl
に割り当てている方の奥です。
AKIBA.AWS #14 AWS Update編でCode Seriesについて話してきました。
なので本ブログで資料の公開をしたいと思います。
自己紹介
登壇資料はこちらです。
CodeCommitとは
- スケーラブルなGitリポジトリ
- GitHub、GitLabなどと似たような立ち位置のツール
- データの転送、保管時に暗号化するのでセキュア(KMSを使用している)
- プリリクエストなどのコラボレーションツールがある
- IAMと統合されており、IAM ユーザーをgitユーザとして使用できる
- IAM ロールでも使えるが設定が若干煩雑(gitのクレデンシャルヘルパーで設定する方法)
- AWS環境との統合
CodeBuildとは
- マネージドなビルドツール
- CirclCIなどと似たような立ち位置
- テスト、ビルドを継続的にできる
- アーティファクト(ビルドして生成されたもの)をS3に保管できる
- Dockerイメージを元にビルド、テストを行う
- AWS側で様々な言語のイメージを準備している(GitHubで公開されています)
- ECR、DockerHub、自分でたてたレジストリも使用可能
- 設定は、yaml形式で書く(
buiildspec.yml
に書く)
CodeDeploy
- EC2、ECS、オンプレ、lambdaにコードをデプロイできる
- In-Place、Blue/Green deploymentに対応
- 手動でのロールバック、失敗時の自動ロールバックをサポート
- コードはS3、GitHubにある必要がある(IAM ポリシーをアタッチして取得できるようにする必要がある)
- 設定はyaml形式で書く(
appspec.yml
に書く)
CodePipeline
- デプロイメントパイプライン(ソースコードからテスト、ビルド、デプロイまで)を構築できる
- CodeCommit、CodeBuild、CodeDeployを組み合わせてパイプラインを作る
- リリースプロセスの自動化ができる
- パイプラインの状態をリアルタイムで確認できる
AWS CodeStar
- AWS上でのパイプラインとデプロイ環境を作る
- EC2、Elastic Beanstalk、Lambdaをデプロイ先として選択できる
- CodePipelineでのパイプライン作成が可能
- CloudWatchでの監視設定も可能
- プロジェクトテンプレートを元に、環境を構築する
- Ruby on RailsやDjango、Spring、Node.jsなどの中から選べる
アップデート
2018年12月(Re:Invent付近)から2019年7月までのアップデートを確認していきます。
時系列順ではないのでご了承ください。
CodeCommit
- CLI、SDKでのcommitサポート 2019/02
- IAM ロールを使用している場合に少しの量のcommitなら使える(多いと大変)
aws codecommit create-commit
という風に実行する
- CFnスタック作成時にリポジトリに初期コミットが可能に 2019/05
- READMEや、サンプルコードなどを初期段階で含ませることが可能に
- CodeCommitに2つのマージ戦略が追加 2019/06
- FastForwardだけだったのがSquashと、3way mergeをサポート
- CodeCommitのリポジトリにタグ付けが可能に 2019/07
CodeBuild
- リソースグループタグ付けAPIのサポート 2019/02
- ローカルキャッシュのサポート 2019/02
- アーティファクトをビルドホストでローカルキャッシュとして使用可能
- キャッシュの分だけビルドが短くなる
- 複数言語でのビルドをサポート 2019/07
- リポジトリに複数言語があるモノリポジトリとかでもビルドが1度で可能に
buildspec
にruntime-versions
を複数していするだけで使用可能
CodeBuildのコンテナ周り
- 公式イメージのDockerランタイムで18.09.0が選択可能に 2018/12
- BuildKitの使用が可能に
- 任意のDockerレジストリが使用可能に 2019/01
- パブリックなDockerHubのイメージか、自アカウントのECRのみだったのが、VPC内にホストされたレジストリなど任意のものを使用可能に
- クロスアカウントでのECR参照が可能に 2019/01
CodePipeline
- CodePipelineでS3へのデプロイが可能に 2019/01
- 過去のパイプラインの実行履歴が確認可能に 2019/03
- Serverless Application Repository への公開が簡単に 2019/03
- 公開されている、プレビルド用のアプリケーションを使用することで、公開時にSDK、CLIを使わずに自動で更新できるようになる
VPC Endpoint対応
- CodeBuild 2018/05
- プライベートサブネット内のリソース(RDS...)との結合テストとかが可能に
- CodePipeline 2018/12
- CodeCommit 2019/03
- EC2インスタンスからパブリックネットワークを介さずにリポジトリの取得などが可能に
リージョン対応
- CodeCommitがAWS GovCloud(米国西部)で利用可能に 2019/04
- CodeCommitがAWS GovCloud(米国東部)で利用可能に 2019/05
- CodeBuildがAWS GovCloud (米国西部)で利用可能に 2019/06
まとめ
- AWS環境でのCI/CDではCode Seriesは便利
- アップデートを重ねて少しずつモダンにはなっている
- CodeBuildは特に進化している