GitHubは、クラウドベースの開発環境であるCodespacesの拡張を続けている。その目的は、柔軟性を高めて開発者の生産性を向上させることである。具体的には、Codespacesの最新リリースは、マイクロサービスを開発している、あるいは大規模なMonorepoを使用しているチームを対象としている。
GitHubは、開発環境の起動に必要な時間を短縮するためにビルド済みCodespacesを導入した。その後、CodespacesをマルチリポジトリおよびMonorepoプロジェクトでの作業により適したものにし、大規模な組織が採用しやすくするために取り組んできた。
マルチリポジトリシナリオはマイクロサービスの典型である。そこでは、各サービスは独自のリポジトリを通して管理される。
これらのサービスの多くに渡る機能を開発する場合、Codespaces内の各リポジトリのクローンを作成して操作することをお勧めします。
通常、Codespacesは特定のリポジトリから作成され、スコープトークンを介してアクセスできる。以前は、たとえば、クローンを作成したり、プルリクエストを作成したりといった、開発者がCodespaces内から追加のリポジトリにアクセスする必要がある場合には、追加のパーソナルアクセストークンを手動で作成する必要があった。
現状では、開発者はCodespacesのdevcontainer.json設定ファイルを編集することで、Codespacesがアクセスできるリポジトリを指定し、どの特権レベルを使用できるかを簡単に指定できる。
これは、my_org/my_repo
リポジトリをCodespacesに追加し、新しいIssueを作成する権限を付与する方法である。
{
"customizations": {
"codespaces": {
"repositories": {
"my_org/my_repo": {
"permissions": {
"issues": "write"
}
}
}
}
}
}
上記の例で"myorg/repo"
の代わりに"myorg/*"
などのワイルドカードを使って、組織に属するすべてのリポジトリの権限を設定することもできる。同じように "permissions": { "write-all" }
を使って、すべての書き込み権限を付与できる。
Codespaces設定で追加のリポジトリを設定した場合は、Codespacesの最初の起動の承認を求めるプロンプトが表示される。
将来的には、Codespacesでのマイクロサービスとの連携をさらにシンプルにする予定です。これは、複数のサービス間で自動的にクローンを作成し、各リポジトリを実行するために環境を初期化する方法を設定できるようにすることで実現します。
Monoreposのサポートは、対象領域の反対側にあるチームを対象としている。それは、1つ以上のチームが複数の絡み合ったリポジトリで作業する代わりに、複数のチームが1つの大きなリポジトリで作業することである。この場合、各チームは個別の方法でCodespacesを設定したい場合がある。
このユースケースをサポートするために、GitHub Codespacesは、それぞれが独自のディレクトリに属する複数のdevcontainer.json
ファイルを定義できる機能を導入した(例:.devcontainer/${DIR}/devcontainer.json
)。
複数の設定が存在する場合、ユーザはCodespacesの作成時に特定の設定を選択できるようになる。そのため、チーム個別のニーズに合わせてCodespacesをより適切にカスタマイズできるようになる。
Codespacesの柔軟性を高めることを目的としたもう1つの新機能は、高度なCodespaces作成のための新しいUIである。これにより、開発者は、ブランチ、リージョン、マシンタイプ、開発コンテナ構成など、Codespacesを作成するときにいくつかのオプションを定義できる。