Codespace 수명 주기

완료됨

GitHub Codespaces는 구성할 수 있으므로, 사용자는 프로젝트에 대한 사용자 지정 개발 환경을 만들 수 있습니다. 프로젝트를 위한 사용자 지정 개발 환경을 구성하면, 프로젝트의 모든 사용자가 사용할 수 있는 반복 가능한 Codespace 구성을 만들 수 있습니다.

Codespace의 수명 주기는 Codespace를 만들 때 시작되고 Codespace를 삭제할 때 종료됩니다. 활성 Codespace의 연결을 끊고 다시 연결해도 실행 중인 프로세스는 영향을 받지 않습니다. Codespace를 중지하고 다시 시작해도 프로젝트에서 변경한 내용이 손실되지 않습니다.

만들기로 시작하고 삭제로 끝나는 Codespace의 순환 수명 주기 다이어그램

Codespace 만들기

GitHub.com이나 Visual Studio Code에서, 또는 GitHub CLI를 이용해 Codespace를 만들 수 있습니다. Codespace는 네 가지 방법으로 만들 수 있습니다.

  • GitHub 템플릿 또는 GitHub.com에 있는 아무 템플릿 리포지토리에서 새 프로젝트를 시작합니다.
  • 새 기능 작업을 위한 리포지토리의 분기에서 시작합니다.
  • 열려 있는 끌어오기 요청에서 진행 중인 작업을 탐색합니다.
  • 특정 시점의 버그를 조사하기 위한 리포지토리 기록의 커밋에서 시작합니다.

코드를 테스트하기 위해 Codespace를 일시적으로 사용하거나, 동일한 Codespace로 돌아가 장기 실행 기능 작업을 수행할 수 있습니다.

리포지토리 또는 분기당 둘 이상의 Codespace를 만들 수 있습니다. 그러나 만들고 동시에 실행할 수 있는 Codespace 수는 제한되어 있습니다. 최대 Codespace 수에 도달하고 다른 코드스페이스를 만들려고 하면 메시지가 표시됩니다. 새 Codespace를 만들려면 기존 Codespace를 제거/삭제해야 한다는 메시지가 표시됩니다.

GitHub Codespaces에서 개발할 때마다 새 Codespace를 만들거나, 기능을 위한 장기 실행 Codespace를 유지할 수 있습니다. 새 프로젝트를 시작하는 경우에는 템플릿에서 Codespace를 만들고 나중에 GitHub의 리포지토리에 게시해야 합니다.

프로젝트에서 작업할 때마다 새 Codespace를 만드는 경우에는 새 커밋이 GitHub에 있도록 밴경 내용을 정기적으로 푸시해야 합니다. 새 프로젝트에 장기 실행 Codespace를 사용하는 경우 Codespace에서 작업을 시작할 때마다 리포지토리의 기본 분기에서 끌어오면 환경에서 최신 커밋을 가져올 수 있습니다. 이 워크플로는 로컬 컴퓨터에서 프로젝트를 작업하는 일과 비슷합니다.

리포지토리 관리자는 리포지토리를 위한 GitHub Codespaces 사전 빌드를 사용하도록 설정하여 Codespace 생성 속도를 높일 수 있습니다.

자세한 연습 및 단계별 지침은 이 모듈의 끝부분에 있는 요약 단원에 있는 GitHub Codespaces에서 코드를 배우기 위한 초보자 가이드Codespace 내 개발하기라는 제목의 리소스를 참조하세요.

Codespace 생성 프로세스

GitHub 코드스페이스의 다이어그램 및 코드 편집기에서 docker 컨테이너로 연결하는 방법

GitHub Codespace를 만들 때 네 가지 프로세스가 발생합니다.

  1. 가상 머신 및 스토리지가 Codespace에 할당됩니다.
  2. 컨테이너가 생성됩니다.
  3. Codespace에 대한 연결이 생성됩니다.
  4. 생성 후 설정이 진행됩니다.

Codespace에서의 변경 내용 저장

웹을 통해 Codespace에 연결하면, 자동 저장이 자동으로 활성화되어 일정 시간이 지나면 변경 내용이 저장됩니다. 데스크톱에서 실행 중인 Visual Studio Code 통해 Codespace에 연결하는 경우, 자동 저장을 반드시 사용하도록 설정해야 합니다.

작업은 클라우드의 가상 머신에 저장됩니다. Codespace를 닫고 중지한 다음 나중에 저장된 작업으로 돌아갈 수 있습니다. 저장되지 않은 변경 내용이 있는 경우, 종료하기 전에 저장하라는 메시지가 표시됩니다. 그러나 Codespace가 삭제되면 작업은 사라집니다. 작업을 저장하려면 변경 내용을 커밋하고 원격 리포지토리 푸시해야 하며, 템플릿에서 Codespace를 만든 경우에는 작업을 새 작업에 게시해야 합니다.

기존 Codespace 열기

활성 또는 중지된 Codespace는 GitHub.com, JetBrains IDE나 Visual Studio Code에서 또는 GitHub CLI를 사용하여 다시 열 수 있습니다.

기존 Codespace를 다시 시작하려면 Codespace가 있는 리포지토리로 이동하여 키를 선택한 , 다음 , 이 코드스페이스 다시 시작을 선택할 수 있습니다. 또는 브라우저에서 https://github.com/codespaces을(를) 열고 리포지토리를 선택한 다음 기존 Codespace를 선택할 수 있습니다.

Codespace의 시간 제한

Codespace가 비활성 상태이거나 사용자가 명시적으로 중지하지 않고 Codespace를 종료한 경우, 비활성 기간이 지나면 애플리케이션은 시간이 초과되고 실행이 중지됩니다. 기본 시간 제한은 비활성 상태가 시작된 후 30분입니다. Codespace가 시간 초과되면 변경 내용이 마지막으로 저장된 시점의 데이터가 보존됩니다.

GitHub Codespaces를 사용하는 동안의 인터넷 연결

Codespace는 인터넷 연결을 요구합니다. Codespace에서 작업하는 동안 인터넷 연결이 끊어지면 Codespace에 액세스할 수 없게 됩니다. 그러나 커밋되지 않은 변경 내용은 저장됩니다. 인터넷 연결이 복구되면, 연결이 끊어졌을 때와 동일한 상태인 Codespace에 액세스할 수 있습니다.

인터넷 연결이 불안정한 경우 변경 내용을 자주 커밋하고 푸시해야 합니다.

Codespace 닫기 또는 중지

중지 명령을 실행하지 않고 Codespace를 종료하거나 상호 작용 없이 Codespace를 계속 실행하면, Codespace와 Codespace에서 실행 중인 프로세스는 비활성 시간 제한 기간에 계속 유지됩니다. 기본 비활성 시간 제한 기간은 30분입니다. 자신이 생성한 Codespace에 대한 개인 시간 제한 설정을 정의할 수 있지만, 이 설정은 조직 시간 제한 정책에 의해 무효가 될 수 있습니다.

실행 중인 Codespace에서만 CPU 요금이 발생합니다. 중지된 Codespace에서는 스토리지 비용만 발생합니다.

변경 내용을 적용하려면 Codespace를 중지하고 다시 시작해야 합니다. 예를 들어 Codespace에 사용되는 컴퓨터 유형을 변경하는 경우 변경 내용이 적용되려면 Codespace를 중지하고 다시 시작해야 합니다. Codespace를 닫거나 중지하면 커밋되지 않은 모든 변경 내용은 Codespace에 다시 연결할 때까지 유지됩니다.

또한 예기치 않은 오류가 발생하는 경우 Codespace를 중지하고 다시 시작하거나 삭제할 수 있습니다.

Codespace 다시 빌드

Codespace를 다시 빌드하여 개발 컨테이너 구성에 대한 변경 내용을 구현할 수 있습니다. 대부분의 경우에는 Codespace를 다시 빌드하는 대신 새 Codespace를 만들면 됩니다. Codespace를 다시 빌드하면 캐시의 이미지 덕분에 재빌드 프로세스 속도가 빨라집니다. 전체 재빌드를 수행하여 캐시를 지우고 새 이미지를 이용해 컨테이너를 다시 빌드할 수도 있습니다.

Codespace에서 컨테이너를 다시 빌드하면 /workspaces 디렉터리 외부에서 수행한 변경 내용이 삭제됩니다. /workspaces 디렉터리 내에서 수행한 변경 내용(Codespace를 만든 리포지토리나 템플릿의 복제본 포함)은 다시 빌드를 해도 유지됩니다.

Codespace 삭제

특정 작업에 대한 Codespace를 만들 수 있습니다. 변경 내용을 원격 분기에 푸시한 후에는 이 Codespace를 삭제해도 됩니다.

푸시되지 않은 git 커밋이 있는 Codespace를 삭제하려고 하면, 편집기에서 원격 분기에 아직 푸시되지 않은 변경 내용이 있다는 메시지를 표시합니다. 원하는 변경 사항을 푸시했다면 Codespace를 삭제해도 됩니다. Codespace 및 커밋되지 않은 변경 내용을 계속 삭제하거나, 새 Codespace를 만들지 않고 코드를 새 분기로 내보낼 수도 있습니다.

중지된 Codespace는 지정된 시간 동안 비활성 상태가 유지되면 자동으로 삭제됩니다. 비활성 Codespace는 30일 후에 삭제되지만 Codespace 보존 주기는 사용자 지정할 수 있습니다.