Dev Desktop
Dev Desktop은 Rust 프로젝트의 메인테이너와 기여자에게 고성능 클라우드 컴퓨팅 자원을 무료로 제공합니다. 이는 Rust 재단의 Cloud Compute Program의 일부입니다.
| 머신 | 아키텍처 | Perf 사용 가능 | 위치 |
|---|---|---|---|
dev-desktop-eu-1 | aarch64 | 예 | 독일 |
dev-desktop-us-1 | aarch64 | 예 | 미국 버지니아 북부 |
dev-desktop-eu-2 | amd64 | 아니요 | 벨기에 |
dev-desktop-us-2 | amd64 | 아니요 | 미국 아이오와 |
프로그램 신청 방법
현재 이 프로그램과 컴퓨팅 인스턴스에 대한 접근 권한은 선별적으로 부여되며, 주로 프로젝트 메인테이너와 Google Summer of Code 같은 오픈 소스 프로그램 출신 기여자에게 부여됩니다. 프로그램이 개발 중인 동안에는 일부 팀으로 제한됩니다. 이러한 팀 중 하나에 속해 있다면 자동으로 접근 권한이 부여됩니다.
고성능 빌드 머신을 사용할 수 있다면 Rust 프로젝트에서의 작업이 크게 개선될 것이라고 생각되면, 팀 저장소에 자신을 cloud-compute 팀에 추가하는 풀 리퀘스트를 여십시오. Dev Desktop을 어떻게 사용할 것이며 어떤 이점을 얻을 수 있는지 간단한 설명을 포함하십시오. 이러한 PR의 예시는 여기에서 확인할 수 있습니다.
- Rust 프로젝트 팀 중 한 곳의 메인테이너가 여러분의 기여를 기꺼이 보증한다면, 인프라 팀은 일반적으로 그 보증에 따라 요청을 흔쾌히 수락합니다.
- 그 밖의 경우에는 인프라 팀이 접근 요청을 사안별로 검토합니다.
Dev Desktop에 접속하는 방법
각 사용자는 Dev Desktop에 자신의 계정을 가집니다. 계정 이름은 사용자의 GitHub 핸들 앞에 gh- 접두사를 붙인 것입니다. 예를 들어, GitHub 핸들이 user인 사용자는 Dev Desktop에서 gh-user라는 이름의 사용자 계정을 갖게 됩니다. GitHub 핸들은 대소문자를 구분하므로 gh-User와 gh-user는 서로 다른 계정으로 취급된다는 점에 유의하십시오.
사용자는 SSH로 Dev Desktop에 접속할 수 있습니다. Dev Desktop은 공개 키 인증을 사용하며, 사용자의 공개 키를 GitHub에서 자동으로 가져옵니다.
다음 명령으로 인스턴스에 접속할 수 있습니다.
ssh gh-<your-username>@<name>.infra.rust-lang.org
<name>을 페이지 상단 표에 있는 머신 이름으로 바꾸십시오. 예를 들어, dev-desktop-eu-1에 접속하려면 호스트 이름 dev-desktop-eu-1.infra.rust-lang.org를 사용하십시오.
GitHub에 공개 키가 없다면, SSH 키를 생성하고 GitHub 계정에 추가하는 방법을 설명하는 다음 가이드를 읽어 보십시오. 키를 추가한 뒤 Dev Desktop에 반영되기까지 몇 분 정도 걸릴 수 있습니다.
명령을 더 간편하게 사용하려면 다음과 같이 ~/.ssh/config에 별칭을 설정할 수 있습니다.
Host rustvm
User gh-<your-username>
HostName <name>.infra.rust-lang.org
그러면 ssh rustvm으로 접속할 수 있습니다.
SSH 호스트 키 지문
Dev Desktop에 처음 접속할 때는 SSH 호스트 키 지문을 확인해야 합니다. Dev Desktop에서는 다음 지문을 사용합니다.
| 머신 | ED25519 |
|---|---|
dev-desktop-eu-1 | SHA256:QPuC8ODm+no9wjAtrSMCuqj+iGXsFI5ZGR3C+nX7Im0 |
dev-desktop-us-1 | SHA256:UOZn6OKFrCRt+CLPl5fHZd93Tym4ckBrr8rgfgEPT5g |
dev-desktop-eu-2 | SHA256:biz6c8LJ6cdb6Ku9mlELzl1qh8sODZWtpNfAJPxBi2I |
dev-desktop-us-2 | SHA256:u6SNCQw++6LV+IhQYEqIcuFo4GIaiU7DyUhaqWEmQdI |
다음 스크립트를 실행하고 출력을 위 표와 비교하여 지문을 확인할 수 있습니다.
ssh-keygen -lf <(ssh-keyscan -t ed25519 <name>.infra.rust-lang.org 2>/dev/null | grep -v '^#')
편의를 위해 호스트 키는 known_hosts 항목 형식으로도 제공됩니다.
dev-desktop-eu-1.infra.rust-lang.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAIIWlDvWkMEX8XIu6lxvd4cFOxeFUpH4ZReKuyS3h9l
dev-desktop-us-1.infra.rust-lang.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEj0DZ/r/Sq5GdK8j80rNjCs6ctwptcHnFvP3bdjhv/5
dev-desktop-eu-2.infra.rust-lang.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOmnv10fXAimjPPfwiutVmJifRS+85rmN/zyIP/QNby6
dev-desktop-us-2.infra.rust-lang.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA2bWm/W7J3QJGRb2z63Mp8nP5rAXOEd1Owd54Wtt5AX
계정을 설정하는 방법
머신에 처음 접속할 때 해 두면 좋은 몇 가지 작업이 있습니다.
먼저 Git 사용자 이름과 이메일이 올바르게 설정되어 있는지 확인하십시오.
git config -l --global
다음 명령으로 사용자 이름과 이메일 주소를 설정할 수 있습니다:
git config --global user.name "Your name"
git config --global user.email "your-email"
셸을 사용자 지정하는 방법
rust-lang/simpleinfra 저장소의 설정 파일에 자신을 추가하면 Dev Desktop의 기본 셸을 설정할 수 있습니다. ansible/roles/dev-desktop/defaults/main.yml을 열고 vars_user_config 변수를 찾아 목록에 자신을 추가하십시오.
vars_user_config:
- username: gh-jdno
shell: /usr/bin/zsh
- username: gh-WaffleLapkin
shell: /usr/bin/fish
풀 리퀘스트를 열고 @rust-lang/infra에 리뷰를 요청하십시오(또는 Zulip의 #t-infra에서 저희를 핑하십시오).
풀 리퀘스트가 병합되면 인프라 관리자가 새 설정을 Dev Desktop에 배포해야 합니다. 배포가 끝나야 비로소 기본 셸이 변경됩니다.
Rust 툴체인을 설치하는 방법
Dev Desktop에는 Rust가 미리 설치되어 있지 않은 대신, 로컬 저장소나 워크트리에서 특정 툴체인을 쉽게 설치할 수 있습니다.
먼저 다음 명령을 실행하여 rustup을 설치하십시오:
/usr/local/bin/init.sh
자신만의 Rust 버전으로 작업하고 싶지 않거나 그럴 필요가 없다면 다음 섹션을 건너뛰고 바로 작업을 시작해도 됩니다.
아직 포크를 만들지 않았다면 GitHub에서 rust-lang/rust 저장소를 열고 개인 계정에 포크를 만드십시오. 그런 다음 Dev Desktop에 접속하여 다음 스크립트를 실행하십시오:
/usr/local/bin/setup_rust.sh
이 스크립트는 개인 포크를 Dev Desktop에 클론하고, rust-lang/rust에서 최신 버전을 체크아웃한 뒤 컴파일합니다. 이 작업이 끝나면 로컬에서 작업할 수 있도록 스테이지를 링크합니다.
이 디렉터리에는 워크트리와 Rust 버전을 관리하는 스크립트가 더 들어 있습니다. help.sh를 실행하면 스크립트 목록과 간단한 설명을 볼 수 있습니다.
GitHub와 상호 작용하는 방법
Dev Desktop은 사용자 계정에 속한 GitHub 저장소로 작업하도록 설계되었습니다. GitHub App을 사용하여 자격 증명을 보호하고, Dev Desktop이 접근할 수 있는 저장소를 세밀하게 제어할 수 있도록 합니다.
먼저 https://github.com/apps/rust-cloud-vms에 가서 앱이 저장소에 접근할 수 있도록 권한을 부여하십시오. Dev Desktop에서 사용하려는 저장소(예: rust-lang/rust의 포크)에만 접근 권한을 부여하는 것을 권장합니다.
그런 다음 Dev Desktop에 접속하여 작업하려는 저장소를 HTTPS로 클론하십시오. 그 이후에는 평소처럼 저장소로 작업할 수 있습니다.
내부적으로 GitHub App은 Git의 자격 증명 도우미 역할을 하며, 사용자가 앱에 부여한 권한 범위로 제한된 임시 액세스 토큰을 생성합니다. 오류가 발생하면 권한을 리뷰하고 앱이 저장소에 접근할 수 있도록 허용되어 있는지 확인하십시오.
Visual Studio Code에서 원격 개발을 설정하는 방법
대부분의 최신 코드 편집기는 SSH를 통한 원격 개발을 지원합니다. 이 기능을 이용하면 코드는 로컬에서 작성하고 실행은 Dev Desktop 안에서 할 수 있습니다. 구성은 편집기마다 조금씩 다르지만, 아래의 Visual Studio Code 예시는 다른 편집기에도 적용할 수 있을 것입니다.
VS Code로 원격 개발 환경을 구성하는 방법은 매우 간단하며, VS Code 문서 Remote Development using SSH에 자세히 설명되어 있습니다. 요약하면 다음과 같습니다.
- SSH로 Dev Desktop에 접속한 뒤 작업할 저장소를 로컬 폴더에 클론하십시오
- 그다음 자신의 컴퓨터에서 VS Code를 열고 Remote Development Extension Pack을 설치하십시오
- 명령 팔레트를 열고 “Remote-SSH: Connect to host”를 검색하십시오
- 사용자 이름과 인스턴스 이름(
gh-<your-username>@<instance>)을 입력하십시오 - 1단계에서 클론한 저장소의 경로를 선택하십시오
- 서버에서 실행할 확장 프로그램(예: rust-analyzer)을 설치하십시오
- VS Code를 사용해 코드를 원격으로 실행하거나 디버그하십시오
새 패키지와 도구를 요청하는 방법
Dev Desktop에 설치되어 있지 않은 도구나 패키지가 필요하다면 rust-lang/simpleinfra 저장소에 풀 리퀘스트를 열어 설치를 요청할 수 있습니다. Ansible 역할 dev-desktop에는 머신에 설치되는 시스템 패키지 목록이 담긴 dependencies.yml이라는 태스크가 있습니다. 필요한 패키지를 이 목록에 추가하고 풀 리퀘스트를 연 다음, @rust-lang/infra를 핑하여 리뷰를 요청하십시오.
먼저 https://packages.ubuntu.com/에서 해당 패키지가 arm64와 amd64 아키텍처 모두에서 제공되는지 확인해 두면 좋습니다. Dev Desktop은 현재 Ubuntu 22.04 LTS에서 실행되고 있습니다.
사용 가능한 디스크 공간
모든 사용자에게는 사용할 수 있는 디스크 공간 할당량이 정해져 있습니다. 현재 할당량은 200GB로 설정되어 있습니다.
할당량을 초과하면 Disk quota exceeded (os error 122) 오류가 발생합니다.
rustc 개발 가이드의 디스크 공간 관련 참고 사항 섹션에 디스크 공간을 정리하는 몇 가지 팁이 있습니다.
피드백을 보내고 이슈를 보고하는 방법
Dev Desktop을 사용하면서 문제가 생기거나 피드백 또는 제안이 있다면 인프라 팀에 연락하십시오.
rust-lang/simpleinfra 저장소에 이슈를 만들어 달라고 요청드릴 수도 있습니다.
Dev Desktop 변경 사항 공지
인프라 팀은 Dev Desktop의 중요한 변경 사항을 Zulip 채널 #t-infra/announcements를 통해 공지합니다.