Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

JetBrains IDE로 GitHub Codespaces 사용하기

GitHub Codespaces는 VS Code와 연결해서 사용할 수 있지만 작년 말부터는 JetBrains IDE도 원격 개발을 제공하기 시작했다. 원래 개발을 JetBrains IDE에서 주로 하는 편이라 익숙지 않은 VS Code보다 편했기 때문에 오래 기다리던 기능이었지만 당시에는 뭐가 문제인지 잘 안되어서 몇 번 시도하다가 설정하지 않고 있었다.

JetBrains IDE의 종류는 상관없지만 먼저 JetBrains Gateway를 설치해야 한다. 아직 Beta 상태이지만 Gateway는 GitHub Codespace 전용이라기보다 JetBrains에서 원격 개발을 할 수 있게 하는 앱이다.

JetBrains Gateway

JetBrains Gateway를 설치한 뒤 프로바이더에서 GitHub Codespaces를 설치한다.

JetBrains Gateway

Connect to Codespaces를 눌러서 GitHub 로그인을 하면 GitHub에 만들어져 있는 Codespace 목록을 확인할 수 있다.

JetBrains Gateway에서 코드스페이스 선택

원하는 Codespaces를 선택하고 연결할 JetBrains IDE를 선택해서 연결할 수 있다. 위 스크린샷을 보면 JetBrains와 연결하려면 최소 4코어의 머신을 선택해 달라고 권장하고 있다. 가격의 차이가 나므로 VS Code를 쓸 때와 아쉬운 부분이기는 하지만 서드파티라서 아무래도 리소스를 더 먹는 것으로 보인다. GitHub에서 머신 타입을 바꿀 수 있으므로 이를 바꾸면 경고 메시지는 사라진다.

바로 연결하면 좋겠지만 [GitHub 문서]](https://docs.github.com/ko/codespaces/developing-in-codespaces/using-github-codespaces-in-your-jetbrains-ide)에서 확인할 수 있듯이 JetBrains에서 GitHub Codespaces를 사용하려면 몇 가지 제약사항이 추가된다.

  • 로컬 환경에서 GitHub CLI가 2.18.0 이상이어야 한다. 현재 버전은 2.23.0이다.(GitHub CLI 글 참고)
  • GitHub Codespace에 SSH 서버가 실행되어 있어야 한다.

다른 설정 없이 Codespace를 실행했다면 기본적으로 SSH 서버가 활성화되어 있지만 다른 이미지를 사용한다면 devcontainer.json 파일에 다음 부분을 추가해서 SSH 서버를 활성화해야 한다.

"features": {
  "ghcr.io/devcontainers/features/sshd:1": {
    "version": "latest"
  }
},

SSH 서버가 없다면 연결하려고 할 때 다음과 같이 오류가 발생한다.

JetBrains Gateway 연결 오류

로컬환경이 GitHub에 SSH로 접속할 수 있어야 하는데 평소 GitHub을 SSH로 사용했다면 ~/.ssh에 키 설정이 되어 있을 테니 큰 문제는 없을 것이다. 처음 실행하면 클라이언트를 처음에는 다운로드 받는데 시간이 좀 걸리는데 이후엔 접속이 잘되고 Codespaces를 처음 생성한 뒤 정상적으로 접속하려면 약간의 시간이 필요한 것 같은데 Gateway에서는 이러한 부분이 잘 확인이 되지 않는다.

실행된 JetBrains Client

클라이언트가 다운로드되면 JetBrains Client가 열린다. 기존에 VS Code로만 사용했어서 당연히 로컬에 설치된 WebStorm이 사용될거라고 생각했는데 JetBrains Client가 별도로 실행되면서 여기서 WebStrom이 사용되는 방식이었다. 그래서 플러그인 등의 환경은 따로 설정해 주어야 한다. 왼쪽 상단에 보면 연결된 Codespace의 이름이 나오고 레이턴시도 알려준다.

JetBrains Client로 개발을 많이 해보진 않았지만, 아직 베타라 그런지 아직 불안한 느낌이 좀 있다.

2023/02/22 09:46 2023/02/22 09:46