AWSのCodeCommitを使用してソース管理を移行する方法
CodeCommitはAWSの管理されたソース管理ソリューションです。これは、AWSのCodeSuite CI/CDパイプラインにおいて重要なコンポーネントであり、頻繁なコードビルドを実行し、アプリケーションの更新をプログラム的にEC2サーバーやLambda関数にデプロイすることを容易にします。
CodeCommitとは何ですか?
実際、CodeCommit自体は素晴らしいものではありません。基本的なソース管理プロバイダーとしてはうまく機能しますし、主なリポジトリとして使用することもできますが、日々の使いやすさに関しては競合他社(GitHub、GitLab、BitBucketなど)にはやや劣ります。
CodeCommitが優れている点は、AWSとの統合です。AWSには、CodeSuiteと呼ばれる継続的開発/継続的インテグレーションのパイプラインがあります。これは、基本的にAWSエコシステム内でソースコードをホストするCodeCommitから始まります。更新する準備ができたら、ソースをCodeBuildに送信できます。CodeBuildは、すべての自動テストを実行し、自動的に立ち上げるビルドサーバーを使用してプロジェクトをビルドします。ビルドが成功すれば、EC2サーバーやLambda関数のフリートに自動的に更新をデプロイできます。
CodeCommitはAWSのCI/CDパイプラインを使用するために必要ではありません。CodeBuildはGitHub、BitBucket、S3からのソース管理をサポートしていますが、2つのリモートを使うGitは非常に簡単なので、CodePipelineを使用する場合は次の構成をお勧めします:
- 通常通り、主要なソース管理を使用し続けてください。また、Jiraや開発を効率化するために使用するその他のサードパーティツールと共に使用してください。
- 運用面では、新しい変更をリリースする準備ができたら、プロジェクトマネージャー(または他の権限を持つ個人)に、プライマリリポジトリからすべての変更を取り出し、リモートをCodeCommitに切り替え、すべての新しいコミットをAWSにプッシュするようにしてください。
- CodeCommitが更新されると、パイプラインはそこから新しいコードをすべて含めて開始できます。
この方法では、CodeCommitはプロジェクトとコミット履歴の完全なコピーを保持しますので、リリースの準備ができたときに使用できます。これにより、CodeCommitを主要なソース管理ツールとして実際に使用する必要がなくなります。また、実際には1人のユーザーしか使用しないため、CodeCommitは基本的に無料ですし、月に何千回もコミットすることはありません。ストレージは無料で50GBが提供され(大量のバイナリファイルがないほとんどのプロジェクトには十分です)、無制限のリポジトリが利用可能です。最初の5人を超える各アクティブユーザーには月額1ドル、最初の10,000回を超える2,000回ごとのGitリクエストには月額1ドルの追加料金が発生します。また、無料の50GBを超えた場合、月額0.06ドルが課金されます。
GitHub または BitBucket を既に使用している場合は、少しの設定をすることでそこから直接プルすることを選択できます。しかし、GitLab(または他のプロバイダー)を使用している場合は、CodePipeline を使用するためにこの二重リモート設定を使用する必要があります(S3 に手動でコードをアップロードしたくない場合は、はるかに面倒な解決策です)。
追加のCodeCommitリリースリモートの設定
まず、リポジトリを作成する必要があります。AWS CodeSuite コンソールから、CodeCommit に移動し、サイドバーの「リポジトリ」を選択し、「リポジトリの作成」をクリックします。
名前、説明、任意のタグを付けて、「作成」をクリックしてください。
次に、リポジトリのホーム画面に移動します。ルートアカウントでサインインしている場合、ルートアカウントのSSH接続を設定できないという大きな警告が表示され、HTTPS接続は推奨されていないことが示されます。コードコミットへの接続は、IAMユーザーに設定する必要があります。おそらくプロジェクトマネージャーの既存のアカウントを使用するでしょう。そのアカウントにサインインするか、IAMコンソールに移動して、この目的専用の新しいユーザーを作成してください(マネジメントコンソールへのアクセス付き)。
ロール選択画面でCodeCommitへのアクセスを付与したいでしょう。
IAMコンソールを開いたままにしておいてください。ここに自分の公開SSHキーを追加する必要があります。CodeCommitアクセスに使用されているユーザーをクリックし、「セキュリティ認証情報」タブの下にある公開SSHキーをアップロードするためのボタンを見つけてください。
あなたのマシンのプライベートキーを貼り付けてください。通常は次の場所で見つけることができます。
cat ~/.ssh/id_rsa.pubここに複数のキーを追加して、複数のマシンにGit経由でCodeCommitへのアクセスを提供できます。各キーに対して「SSHキーID」が付与されるので、それをコピーしてください。
「~/.ssh/config」を開くか、まだ存在しない場合は作成してください。以下の設定を貼り付け、あなたのキーIDに置き換えてください:
Host git-codecommit.*.amazonaws.com
User IAM-SSH-KEY-ID
IdentityFile ~/.ssh/id_rsa
権限が600に設定されていることを確認してください。
chmod 600 ~/.ssh/configこれにより、gitは設定したIAMユーザーを使用して適切な接続を確立します。
その作業が終わったら、新しいリモートを通常通り追加できるはずです。あなたのプライマリリモートはおそらく「origin」と呼ばれています。「release」と呼ばれる新しいリモートを作成してください。CodeCommitが提供するSSH URLを使用します。
git remote add release ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepoName次に、git pushを実行する際には、プッシュするリモート名とブランチを指定します。
git push release masterリリースデプロイメント用の別のブランチを設定することもできますが、デフォルトでアップストリームをリリースに設定するようになります。ただし、これは最もシンプルな設定であり、問題なく動作するはずです。前のコマンドを実行すると、ローカルリポジトリがプライマリソース管理と最新の状態である限り、CodeCommitが更新されます。



