개발 데스크톱
Dev Desktop는 Rust 프로젝트의 메인테이너와 기여자에게 고성능 클라우드 컴퓨팅에 대한 무료 접근을 제공합니다. 이는 [Rust 재단]의 Cloud Compute Program의 일부입니다.
| 머신 | 아키텍처 | Perf 활성화 | 위치 |
|---|---|---|---|
dev-desktop-eu-1 | aarch64 | 예 | 독일 |
dev-desktop-us-1 | aarch64 | 예 | N. 버지니아, 미국 |
dev-desktop-eu-2 | amd64 | 아니오 | 벨기에 |
dev-desktop-us-2 | amd64 | 아니오 | 아이오와, 미국 |
프로그램에 신청하는 방법
현재 이 프로그램과 컴퓨팅 인스턴스에 대한 접근 권한은 선별적으로 부여되며, 주로 프로젝트 메인테이너와 Google Summer of Code와 같은 오픈소스 프로그램의 컨트리뷰터에게 제공됩니다. 프로그램이 개발 중인 동안에는 certain teams로 제한됩니다. 이러한 팀 중 하나에 속해 있다면 자동으로 접근 권한을 갖게 됩니다.
Rust 프로젝트에서의 작업이 강력한 빌드 머신에 접근함으로써 크게 개선될 것 같다면, team repo에 풀 리퀘스트를 열어 자신을 cloud-compute 팀에 추가하십시오. 개발 데스크톱을 어떻게 사용하고 이를 통해 어떤 이점을 얻을지에 대한 간단한 설명을 포함하십시오. 그러한 PR의 예시는 여기에서 확인할 수 있습니다.
- Rust 프로젝트 팀 중 한 곳의 메인테이너가 귀하의 기여를 기꺼이 보증한다면, Infra 팀은 일반적으로 그 보증에 따라 요청을 기꺼이 수락합니다.
- 그렇지 않은 경우, Infra 팀이 사안별로 접근 요청을 평가합니다.
Dev Desktop에 접속하는 방법
각 사용자는 개발용 데스크톱에 자신의 계정을 가지고 있습니다. 계정 이름은 사용자의 GitHub 핸들에 gh- 접두사를 붙여 지어집니다. 예를 들어, GitHub 핸들이 user인 사용자는 Dev Desktop에서 gh-user라는 이름의 사용자 계정을 갖게 됩니다. GitHub 핸들은 대소문자를 구분하므로 gh-User와 gh-user는 서로 다른 계정으로 취급된다는 점에 유의하십시오.
사용자는 SSH를 통해 Dev Desktop에 접속할 수 있습니다. 개발용 데스크톱은 공개 키 인증을 사용하며, GitHub에서 사용자의 공개 키를 자동으로 가져옵니다.
다음 명령으로 인스턴스에 연결할 수 있습니다:
ssh gh-<your-username>@<name>.infra.rust-lang.org
<name>을 페이지 상단 표에 있는 머신 이름으로 바꾸십시오. 예를 들어 dev-desktop-eu-1.infra.rust-lang.org 호스트네임을 사용하여 dev-desktop-eu-1에 연결합니다.
GitHub에 공개 키가 없다면, SSH 키를 생성하여 GitHub 계정에 추가하는 방법을 설명하는 다음 가이드를 읽으십시오. 키가 추가된 후 개발용 데스크톱이 업데이트되기까지 몇 분이 걸릴 수 있습니다.
명령을 더 간편하게 만들기 위해 ~/.ssh/config에 다음과 같이 별칭(alias)을 설정할 수 있습니다:
Host rustvm
User gh-<your-username>
HostName <name>.infra.rust-lang.org
그러면 ssh rustvm으로 연결할 수 있습니다.
SSH 호스트 키 지문
Dev Desktop에 처음 접속할 때는 SSH 호스트 키 지문을 확인해야 합니다. 다음 지문들이 개발용 데스크톱에서 사용됩니다.
| 머신 | 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 데스크톱의 기본 셸을 설정할 수 있습니다. 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 데스크톱에 새 설정을 배포해야 합니다. 그 이후에야 기본 셸이 변경됩니다.
Rust 툴체인을 설치하는 방법
Dev Desktop에는 Rust가 사전 설치되어 있지 않지만, 대신 로컬 저장소나 worktree로부터 특정 툴체인을 쉽게 설치할 수 있게 해줍니다.
먼저 rustup을 설치하기 위해 다음 명령을 실행하십시오:
/usr/local/bin/init.sh
자신만의 버전의 Rust로 작업할 필요가 없거나 원하지 않는다면, 다음 섹션을 건너뛰고 작업을 시작해도 됩니다.
아직 하지 않았다면, GitHub에서 rust-lang/rust 저장소를 열고 개인 계정에 포크를 생성하십시오. 그런 다음 Dev Desktop에 접속하여 다음 스크립트를 실행하십시오:
/usr/local/bin/setup_rust.sh
이 스크립트는 개인 포크를 Dev Desktop으로 클론하고, rust-lang/rust의 최신 버전을 체크아웃한 뒤 컴파일합니다. 작업이 끝나면 로컬에서 작업할 수 있도록 스테이지들을 링크합니다.
이 디렉터리에는 worktree와 Rust 버전을 관리하기 위한 스크립트가 더 포함되어 있습니다. help.sh를 실행하면 이들의 목록과 간단한 설명을 확인할 수 있습니다.
GitHub와 상호작용하는 방법
dev 데스크톱은 사용자 계정에 속한 GitHub 상의 저장소와 함께 작동하도록 설계되어 있습니다. GitHub 앱은 자격 증명을 보호하고, dev 데스크톱이 접근할 수 있는 저장소를 세밀하게 제어할 수 있도록 사용됩니다.
먼저 https://github.com/apps/rust-cloud-vms로 이동하여 앱에 저장소 접근 권한을 부여하십시오. Dev Desktop에서 사용하려는 저장소(예: rust-lang/rust의 포크)에만 접근 권한을 부여하는 것이 권장됩니다.
그런 다음 Dev Desktop에 접속하여 작업하려는 저장소를 HTTPS로 클론하십시오. 이후에는 평소처럼 저장소로 작업할 수 있습니다.
내부적으로 GitHub 앱은 Git의 자격 증명 헬퍼 역할을 하며, 사용자가 앱에 부여한 권한 범위 내에서 임시 접근 토큰을 생성합니다. 오류가 발생하면 권한을 검토하여 앱이 저장소에 접근할 수 있도록 허용되어 있는지 확인하십시오.
Visual Studio Code에서 원격 개발을 설정하는 방법
대부분의 최신 코드 에디터는 SSH를 통한 원격 개발을 지원합니다. 이는 로컬에서 코드를 작성하되 Dev Desktop 내부에서 실행하는 데 사용될 수 있습니다. 설정은 다소 다르겠지만, 다음 Visual Studio Code 예제는 다른 에디터에도 적용 가능할 것입니다.
VS Code로 원격 개발을 설정하는 것은 매우 간단하며, VS Code 문서인 Remote Development using SSH에 자세히 설명되어 있습니다. 요약하면 다음과 같습니다:
- Dev Desktop에 SSH로 접속하여 작업하려는 저장소를 로컬 폴더로 클론하십시오
- 그런 다음 로컬 머신에서 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 guide의 [디스크 공간에 관한 remarks] 섹션에는 디스크 공간을 정리하는 방법에 대한 몇 가지 팁이 있습니다.
피드백을 전달하고 이슈를 보고하는 방법
Dev Desktop에 문제가 있거나 피드백 및 제안 사항이 있다면 [인프라 팀]에 연락하십시오:
저희가 rust-lang/simpleinfra 저장소에 이슈를 생성해 달라고 요청할 수도 있습니다.
Dev Desktop 변경 사항 공지
인프라 팀은 중요한 Dev Desktop 변경 사항을 #t-infra/announcements Zulip 채널을 통해 공지합니다.