Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Renovate

Renovate는 크레이트, GitHub Actions, Docker 베이스 이미지와 같은 의존성을 최신 상태로 유지하기 위해 저희(인프라 팀)가 권장하는 도구입니다.

의존성 업데이트에 대하여

왜 의존성을 최신 상태로 유지해야 할까요?

버그 수정, 성능 개선, 보안 패치, 새로운 기능을 얻고 전반적으로 더 나은 개발자 경험을 누리기 위해서입니다.

의존성은 얼마나 자주 업데이트해야 할까요?

의존성 업데이트 PR을 너무 자주 받는 것은 부담스럽습니다. 예를 들어, 의존성의 모든 새 버전마다 PR을 받는 것은 권장하지 않습니다.

대신, 일주일에 한 번 또는 한 달에 한 번처럼 정기적인 일정으로 몇 개의 PR을 받는 것을 권장합니다. 예를 들어 GitHub Actions 업데이트용 PR 하나, 호환 가능한 크레이트 업데이트용 PR 하나, 그리고 호환되지 않는 크레이트 업데이트마다 PR 하나씩입니다.

의존성 업데이트를 자동으로 병합해야 할까요?

신뢰할 수 있는 테스트 스위트가 있고, PR을 병합할 때 CI가 자동으로 프로덕션에 배포하거나 아티팩트를 게시하지 않는다면, CI 검사를 통과한 의존성 업데이트를 자동 병합해도 안전할 것입니다.

저장소에 Renovate를 추가하는 방법

1. renovate GitHub App 설치하기

team 저장소에 있는 여러분의 저장소 toml 파일에 bots = ["renovate"] 또는 bots = ["forking-renovate"]를 추가하십시오.

예를 들어 annotate-snippets-rs를 참고하십시오

두 앱의 차이점은 다음과 같습니다:

  • renovate GitHub App은 대상 저장소에 직접 업데이트 브랜치를 생성합니다. 이를 위해서는 저장소 콘텐츠에 대한 쓰기 권한이 필요합니다. 이 권한 덕분에 자동 병합도 지원합니다.
  • forking-renovate GitHub App은 자신의 포크에 브랜치를 생성하고 대상 저장소로 PR을 다시 엽니다. 대상 저장소에 대한 어떤 권한도 필요하지 않지만, 공개 저장소에서만 작동하며 자동 병합을 지원하지 않습니다.

2. Renovate 설정하기

다음 내용으로 .github/renovate.json5 파일을 생성하십시오:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["github>rust-lang/renovate"]
}

참고:

  • 기본 설정이 마음에 들지 않으신다면, rust-lang/renovate를 살펴보고 저희 조직 프리셋을 커스터마이징하는 방법을 알아보십시오.
  • 저희 조직 프리셋 중 어느 것도 마음에 들지 않으신다면, 저희 프리셋을 확장하지 않는 자체 설정을 사용하셔도 됩니다. 저희 조직 프리셋을 개선할 아이디어가 있으시다면, PR을 환영합니다!
  • 다른 파일 형식과 위치도 지원되며, 자세한 내용은 Renovate 문서를 참고하십시오.
  • renovate.json 경로에 대한 GitHub 코드 검색을 통해 Rust 조직 내 다른 설정 파일에서 아이디어를 얻으실 수 있습니다.

3. Renovate가 작동하는지 확인하기

Renovate가 디펜던시 대시보드 GitHub 이슈를 생성했는지 확인하십시오. 그러면 해당 이슈와 상호작용하여 저장소에서 PR을 트리거할 수 있습니다.

4. Renovate 동작 문제 해결하기

Renovate가 예상대로 동작하지 않는 이유를 이해할 수 없다면, 드라이런 모드로 로컬에서 실행하여 의존성 업데이트를 어떻게 해석하는지 평가할 수 있습니다:


RENOVATE_DRYRUN_TOKEN=$(gh auth token) &&\
docker run --rm -it\
    -e RENOVATE_TOKEN="$RENOVATE_DRYRUN_TOKEN"\
    -e GITHUB_COM_TOKEN="$RENOVATE_DRYRUN_TOKEN"\
    -v /tmp:/tmp\
    -v $PWD:/usr/src/app\
    renovate/renovate:latest renovate --platform=local --repository-cache=reset --dry-run=lookup

더 많은 로그가 필요하다면 위 명령에 -e LOG_LEVEL=debug를 추가하십시오.

지원

Renovate가 작동하지 않거나 질문이 있으시면 #t-infra Zulip 채널에서 문의하십시오.