개요
GitHub
은 Dependabot
이라는 기능을 제공하고 있습니다. GitHub
에서 해당 기능을 사용하면, 정기적으로 프로젝트에서 사용하는 패키지, 라이브러리의 버전을 체크하고, 업데이트가 있는 경우, Pull request
를 자동으로 생성해 줍니다.
- GitHub Dependabot: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates
GitHub
의 Dependabot
에 최근 Flutter/Dart의 pub
패키지 관리자가 추가되었습니다.
- GitHub Changelog: pub beta support for Dependabot version updates
이번 블로그 포스트에서는 GitHub
의 Dependabot
을 사용하여 Flutter
에서 사용하는 패키지 버전을 체크하고 업데이트 하는 방법에 대해서 알아보도록 하겠습니다.
Flutter의 Dependabot 설정
GitHub
의 Dependabot
을 사용하기 위해서는 프로젝트 폴더에 .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 language support
확인
이렇게 .github/dependabot.yml
파일을 생성하고 설정하였다면, 해당 파일을 GitHub
에 올립니다. (main
브랜치에 merge
합니다) 그럼 일정 주기에 따라 다음과 같이 Dependabot
이 새로운 버전으로 Pull request
을 만들어 주는 것을 확인할 수 있습니다.
해당 Pull request
를 열어보면, 다음과 같이 Release notes
와 Commits
을 확인할 수 있습니다
각 항목을 열어보면, 자세한 수정 사항을 확인할 수 있습니다.
- Release notes
- commits
이를 통해 새 버전의 변경 사항을 확인할 수 있으며, 현재 프로젝트의 영향 범위를 확인할 수 있습니다.
File changed
탭을 열어보면 pubspec.yaml
와 pubspec.lock
파일이 변경된 것을 확인할 수 있습니다.
GitHub Actions
이제 GitHub
의 Dependabot
이 여러분이 사용하고 있는 패키지의 업데이트가 있는 경우, 자동으로 Pull request
를 생성하게 되었습니다. 이렇게 생성한 Pull request
를 적용해도 될지 말지 고민하게 되는데, Flutter
의 Linter
설정과 테스트 코드를 잘 작성해 두었다면, GitHub Actions
를 사용하여 해당 Pull request
를 검사할 수 있습니다.
또한, 다음과 같은 내용을 .github/dependabot.yml
파일에 추가해 두면, Dependabot
이 GitHub Actions
에서 사용하는 Actions
의 버전을 체크하고 업데이트가 있는 경우도 알려주게 됩니다.
version: 2
enable-beta-ecosystems: true
updates:
...
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
time: "09:00"
timezone: Asia/Tokyo
완료
이것으로 GitHub
의 Dependabot
을 사용하여, Flutter
프로젝트에서 사용하고 있는 패키지들의 버전을 자동으로 체크하고 업데이트 할 수 있도록 구성해 보았습니다. 여러분들도 Dependabot
을 활용하여 프로젝트에서 사용하고 있는 패키지들의 버전을 항상 최신 버전으로 유지해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.