Triagebot
Triagebot(rustbot이라고도 함)는 rust-lang 조직에서 다양한 작업에 사용되는 범용 봇으로, 보통 GitHub나 Zulip 댓글을 통해 명령을 전송하는 방식으로 사용됩니다. 다음 페이지에서는 사용 가능한 기능을 설명합니다.
명령은 보통 @rustbot이라는 텍스트로 시작하는 댓글을 작성하여 실행합니다. 사용 가능한 명령은 사용 중인 저장소에 따라 다릅니다. 각 저장소에는 triagebot.toml이 있으며, 여기서 어떤 기능이 활성화되어 있는지 확인할 수 있습니다.
예를 들어 다음과 같은 댓글은:
@rustbot label A-diagnostics A-macros
GitHub UI에서 직접 권한이 없는 사람도 GitHub 이슈나 풀 리퀘스트에 지정된 라벨을 설정할 수 있게 해줍니다.
GitHub 명령
GitHub 이슈나 풀 리퀘스트에서의 명령은 보통 댓글 어디에든 @rustbot을 쓰고 뒤에 명령을 이어 작성하여 실행합니다. @rustbot은 마크다운 코드 블록, 인라인 코드 스팬, HTML 블록, 인용구 안에 있는 명령은 무시합니다. 하나의 댓글에 여러 개의 rustbot 명령을 입력할 수 있습니다.
Triagebot은 댓글 수정도 허용합니다. 명령의 텍스트를 수정하지 않으면 triagebot은 수정 사항을 무시합니다. 하지만 기존 명령을 수정하거나 새로운 명령을 추가하면 해당 명령이 처리됩니다.
Zulip 명령
Zulip에서의 명령은 triagebot 계정에 다이렉트 메시지를 보내거나, Zulip 스트림에서 @triagebot을 핑하고 명령을 지정하면 해당 스트림 내에서 실행되는 방식으로 발행됩니다.
triagebot Zulip 명령에 대한 문서는 여기에서 찾을 수 있습니다.
설정
개별 GitHub 저장소는 기본 브랜치의 루트에 있는 triagebot.toml이라는 파일을 통해 triagebot 기능을 설정할 수 있습니다. 다음 페이지에서는 각 기능에 필요한 문법을 설명합니다.
예를 들어 rust-lang/rust의 설정 파일은 https://github.com/rust-lang/rust/blob/HEAD/triagebot.toml에 있습니다.
새 저장소에 triagebot.toml을 처음 추가할 때는 봇이 동작할 수 있도록 권한을 활성화해야 합니다. 이는 rust-lang/team 데이터베이스에 PR을 올려 repos/rust-lang 디렉터리 내 해당 저장소에 bots = ["rustbot"]을 추가하는 방식으로 할 수 있습니다.
전역 설정
GitHub 조직은 해당 조직의 모든 저장소에 적용되는 전역 설정을 가질 수 있습니다. rust-lang의 전역 설정은 https://github.com/rust-lang/triagebot/blob/master/rust-lang.triagebot.toml에 위치합니다.
전역 설정의 설정 옵션은 일반 triagebot.toml 파일과 동일하지만, 각 설정 항목에 excluded-repos = ["rust-lang/foo"] 옵션을 포함하여 지정된 저장소에서 해당 기능을 비활성화할 수 있다는 점이 다릅니다.
자주 쓰이는 명령 요약
다음은 rust-lang/rust에서 볼 수 있는 몇 가지 일반적인 명령입니다.
| 명령 | 설명 | 문서 |
|---|---|---|
@rustbot claim | 이슈를 자신에게 배정합니다. | 이슈 배정 |
@rustbot release-assignment | 자신에 대한 이슈 배정을 해제합니다. | 이슈 배정 |
@rustbot assign @octocat | 특정 사용자에게 이슈를 배정합니다. | 이슈 배정 |
@rustbot ready | PR이 리뷰 준비가 되었음을 나타냅니다. | 단축 명령 |
@rustbot author | PR이 작성자의 응답을 기다리고 있음을 나타냅니다. | 단축 명령 |
@rustbot blocked | PR이 어떤 것에 의해 막혀 있음을 나타냅니다. | 단축 명령 |
@rustbot label A-diagnostics A-macros | 이슈나 PR에 두 개의 레이블을 추가합니다. | 레이블 지정 |
@rustbot label -P-high | 이슈나 PR에서 레이블을 제거합니다. | 레이블 지정 |
@rustbot ping windows | Windows 핑 그룹을 핑하는 댓글을 게시합니다. | 핑 보내기 |
@rustbot prioritize | 우선순위 지정 워킹 그룹에 우선순위 지정을 요청합니다. | 우선순위 지정 |
r? @octocat | PR을 사용자에게 배정합니다. | PR 배정 |
r? libs | libs 리뷰 그룹에서 무작위로 선택된 사람에게 배정합니다. | PR 배정 |
r? rust-lang/cargo | cargo 팀에서 무작위로 한 사람을 배정합니다. | PR 배정 |
다음은 Zulip에서 볼 수 있는 몇 가지 일반적인 명령입니다:
| 명령어 | 설명 | 문서 |
|---|---|---|
@triagebot read | 회의에서 사람들이 문서를 읽기를 기다립니다. | Zulip 회의 관리 |
@triagebot end-topic | 회의에서 모두가 주제에 대한 논의를 마쳤는지 확인합니다. | Zulip 회의 관리 |
@triagebot end-meeting | 모두가 회의를 마칠 준비가 되었는지 확인합니다. | Zulip 회의 관리 |
더 많은 Zulip 명령은 여기에서 찾을 수 있습니다.
구현
triagebot의 소스 코드는 https://github.com/rust-lang/triagebot에서 찾을 수 있습니다. triagebot을 확장하는 데 관심이 있다면, 해당 위치의 문서가 시작하는 방법에 대한 지침을 제공할 것입니다.