Renovate로 프로젝트 종속성을 자동으로 최신 상태로 유지

종속성을 최신 상태로 유지하는 것이 지루한 프로세스라는 것을 모두 알고 있습니다. 너무 오랫동안 많은 프로젝트에서 수동으로 이 작업을 수행해 왔습니다. 지루한 과정입니다. 주기적으로 모든 종속성을 확인하고 업데이트가 있는지 확인해야 합니다. 있는 경우(항상 있는 경우) 수동으로 설치하고 테스트해야 합니다.

더이상. Renovate 덕분에 대부분의 작업을 자동화할 수 있었습니다. 종속성을 스캔하고 새 업데이트에 대한 풀 요청을 엽니다. GitHub의 Dependabot에 대해 들어 보셨을 것입니다. Renovate는 스테로이드에 관한 것입니다. 더 많은 자동화를 허용하는 더 많은 사용자 정의 및 기능을 제공합니다. 이것은 더 이상 많은 시간을 소비하지 않지만 최신 상태로 유지해야 하는 잊혀진 사이트 프로젝트에 특히 유용합니다.

워크플로우



도구가 나를 위해 해주고 싶은 것은 다음과 같습니다.
  • 매주 월요일 아침 업데이트를 함께 그룹화하고 전달해야 합니다. 이렇게 하면 귀찮을 수 있는 일일 종속성 업데이트를 받지 못합니다. 또한 단일 패키지 업데이트마다 별도로 CI/CD 파이프라인을 실행하지 않고 한 번만 실행하여 인프라 비용을 낮춥니다.
  • 패키지 업데이트를 설치해야 하는 가장 빠른 날짜는 릴리스 후 7일입니다. 이렇게 하면 이러한 공격이 발견되기 전에 프로젝트에 악성 코드를 가져올 위험이 최소화됩니다.
  • 주요 업데이트(패치 및 마이너 버전)는 main에 자동으로 병합되어야 합니다. 풀 요청 통과에 대한 테스트를 제공했습니다.
  • 주요 업데이트의 경우 풀 요청을 열어야 하지만 그룹화하거나 자동으로 병합해서는 안 됩니다. 변경 로그를 읽고 각 패키지에 대한 잠재적인 주요 변경 사항을 수동으로 처리해야 하기 때문입니다.

  • 설정



    시작하려면 프로필에 GitHub App을 추가하세요. 그런 다음 사용할 리포지토리를 선택하십시오.

    Renovate는 이제 리포지토리에 renovate.json 파일을 추가하는 풀 요청을 자동으로 생성합니다. 원하는 경우 이 파일을 .github/ 하위 폴더로 이동할 수도 있습니다. 그러나 Renovate가 원하는 방식으로 동작하도록 하려면 구성을 확장해야 합니다.

    renovate.json 파일은 다음과 같습니다. 위에서 설명한 워크플로를 구현합니다.

    {
      "extends": ["config:base"],
      "stabilityDays": 7,
      "prCreation": "not-pending",
      "internalChecksFilter": "strict",
      "updateNotScheduled": true,
      "timezone": "Europe/Zurich",
      "schedule": ["before 5am on Monday"],
      "packageRules": [
        {
          "matchPackagePatterns": ["*"],
          "matchUpdateTypes": ["minor", "patch"],
          "groupName": "all non-major dependencies",
          "groupSlug": "all-minor-patch",
          "labels": ["dependencies"],
          "automerge": true
        },
        {
          "matchPackagePatterns": ["*"],
          "matchUpdateTypes": ["major"],
          "labels": ["dependencies", "breaking"],
          "automerge": false
        }
      ]
    }
    


    적극적으로 작업하는 중요한 프로젝트에는 자동 병합을 활성화하지 않습니다. 이러한 프로젝트에서 중단되지 않는 종속성 업데이트를 신속하게 검토하고 괜찮다면 수동으로 병합하는 것이 가치가 있습니다.

    결론



    업데이트된renovate.json 설정을 커밋하면 자동화된 종속성 업데이트 프로그램이 완료됩니다.

    이제 우리는 프로젝트 종속성을 관리하기 위한 자동화되었지만 걱정 없는 접근 방식을 가지고 있습니다. 다음과 같이 표시됩니다.
  • 패키지 업데이트가 나옴
  • 매주 월요일 아침 새 풀 요청에 새 업데이트가 적용됨
  • 풀 요청 실행을 위한 자동화된 테스트 스위트
  • 모든 테스트를 통과하면 주요 변경 사항이 자동으로 main로 병합됩니다.
  • 변경 사항이 프로덕션에 자동으로 배포됨
  • 좋은 웹페이지 즐겨찾기