[Flutter] GitHub Dependabot

2022-11-17 hit count image

GitHub의 Dependabot을 사용하여 자동으로 Flutter 패키지의 버전을 검토하고 업데이트가 있는 경우, 자동으로 Pull request를 생성하는 방법에 대해서 알아봅시다.

개요

GitHubDependabot이라는 기능을 제공하고 있습니다. GitHub에서 해당 기능을 사용하면, 정기적으로 프로젝트에서 사용하는 패키지, 라이브러리의 버전을 체크하고, 업데이트가 있는 경우, Pull request를 자동으로 생성해 줍니다.

GitHubDependabot에 최근 Flutter/Dart의 pub 패키지 관리자가 추가되었습니다.

이번 블로그 포스트에서는 GitHubDependabot을 사용하여 Flutter에서 사용하는 패키지 버전을 체크하고 업데이트 하는 방법에 대해서 알아보도록 하겠습니다.

Flutter의 Dependabot 설정

GitHubDependabot을 사용하기 위해서는 프로젝트 폴더에 .github 폴더를 생성한 후, dependabot.yml 파일을 생성해야 합니다.

.github/dependabot.yml 파일을 생성하였다면, 해당 파일을 열고 다음과 같이 수정합니다.

version: 2
enable-beta-ecosystems: true
updates:
  - package-ecosystem: "pub"
    directory: "/"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo
    open-pull-requests-limit: 5

pub 패키지 관리자는 아직 beta 버전이므로 enable-beta-ecosystems: true을 설정할 필요가 있습니다.

Flutter 프로젝트에서 많은 패키지들을 사용한다면, 너무 많은 Pull request이 생성되어 업무에 방해가 될 수 있습니다. 따라서 open-pull-requests-limit: 5 옵션을 설정하여 Dependabot이 생성할 수 있는 Pull request 개수를 제한하거나, schedule을 설정하여, 특정 주기로 Dependabot이 작동하도록 설정할 수 있습니다.

Android의 Dependabot 설정

안드로이드는 Gradle을 사용하여 라이브러리의 버전을 관리합니다. 따라서 Dependabot에 Gradle을 설정하면 안드로이드에 추가한 라이브러리들의 버전을 관리할 수 있습니다. .github/dependabot.yml 파일을 열고, 다음과 같이 수정하여 Gradle을 위한 Dependabot을 추가합니다.

version: 2
enable-beta-ecosystems: true
updates:
  ...
  - package-ecosystem: "gradle"
    directory: "/android"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo

iOS의 Dependabot 설정

iOS는 CocoaPods을 사용하여 라이브러리 버전을 관리합니다. 하지만, 안타깝게도 iOS용 Dependabot은 현재 지원하고 있지 않습니다. Dependabot이 지원하고 있는 언어들은 공식 문서에서 확인할 수 있습니다.

확인

이렇게 .github/dependabot.yml 파일을 생성하고 설정하였다면, 해당 파일을 GitHub에 올립니다. (main 브랜치에 merge합니다) 그럼 일정 주기에 따라 다음과 같이 Dependabot이 새로운 버전으로 Pull request을 만들어 주는 것을 확인할 수 있습니다.

Flutter - Dependabot pull request

해당 Pull request를 열어보면, 다음과 같이 Release notesCommits을 확인할 수 있습니다

Flutter - Dependabot details: release notes and commits

각 항목을 열어보면, 자세한 수정 사항을 확인할 수 있습니다.

  • Release notes

Flutter - Dependabot release notes detail

  • commits

Flutter - Dependabot commits detail

이를 통해 새 버전의 변경 사항을 확인할 수 있으며, 현재 프로젝트의 영향 범위를 확인할 수 있습니다.

File changed 탭을 열어보면 pubspec.yamlpubspec.lock 파일이 변경된 것을 확인할 수 있습니다.

Flutter - Dependabot file changed detail

GitHub Actions

이제 GitHubDependabot이 여러분이 사용하고 있는 패키지의 업데이트가 있는 경우, 자동으로 Pull request를 생성하게 되었습니다. 이렇게 생성한 Pull request를 적용해도 될지 말지 고민하게 되는데, FlutterLinter 설정과 테스트 코드를 잘 작성해 두었다면, GitHub Actions를 사용하여 해당 Pull request를 검사할 수 있습니다.

또한, 다음과 같은 내용을 .github/dependabot.yml 파일에 추가해 두면, DependabotGitHub Actions에서 사용하는 Actions의 버전을 체크하고 업데이트가 있는 경우도 알려주게 됩니다.

version: 2
enable-beta-ecosystems: true
updates:
  ...
  - package-ecosystem: github-actions
    directory: "/"
    schedule:
      interval: weekly
      time: "09:00"
      timezone: Asia/Tokyo

완료

이것으로 GitHubDependabot을 사용하여, Flutter 프로젝트에서 사용하고 있는 패키지들의 버전을 자동으로 체크하고 업데이트 할 수 있도록 구성해 보았습니다. 여러분들도 Dependabot을 활용하여 프로젝트에서 사용하고 있는 패키지들의 버전을 항상 최신 버전으로 유지해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
Posts