GitHub Actions용 Dart 지원 발표
GitHub Actions용 Dart 지원 발표 (Announcing Dart support for GitHub Actions)
GitHub Actions는 GitHub 저장소의 지속적 통합(CI)을 위한 인기 있는 서비스예요. 오늘 Dart 팀의 공식 setup-dart 액션 을 발표해요. 이 액션은 Dart SDK를 다운로드, 설치, 구성하는 것을 지원해서, GitHub Actions에서 Dart 빌드와 테스트 작업을 쉽게 실행할 수 있게 해줘요.
pub.dev용 Dart 패키지를 만든다면 저장소에 GitHub Actions로 CI 테스트를 활성화하길 권장해요. 그러면 패키지가 건강한지에 대한 신호를 (패키지 사용자에게도) 줄 수 있어요. GitHub Actions의 CI 작업은 공개 저장소에서는 무료예요.
본문
setup-dart 소개
Dart 앱이 들어 있는 GitHub 저장소가 있다면, GitHub Actions와 setup-dart 액션으로 몇 번의 클릭만에 CI 테스트를 활성화할 수 있어요. 여기 myapp이라는 새 GitHub 저장소가 있는데, 이건 dart create --template console-full myapp을 실행해서 Dart 도구로 생성한 작은 앱의 시작점을 담고 있어요.
다음으로 GitHub 웹 UI를 열고 Actions 탭을 클릭하세요.
소개 바로 아래에 Dart 저장소용 워크플로우를 제안하는 섹션이 보일 거예요.
Set up this workflow 버튼을 클릭하면 새 .github/workflow/dart.yml 파일을 추가하는 GitHub UI로 이동해요. 이것은 저장소에서 실행할 GitHub Actions 워크플로우를 정의하는 YAML 파일이에요. 템플릿 워크플로우 파일이 제안하는 각 구성 요소를 살펴볼게요.
먼저 Actions 관리 UI에 표시될 워크플로우의 이름을 정의해요.
name: Dart
다음으로 워크플로우가 언제 실행될지(워크플로우를 트리거하는 이벤트)를 정의해요. 여기서는 main 브랜치로 push가 있거나 main 브랜치에 대한 PR이 있을 때마다 실행되도록 구성했어요. 저는 개인적으로 워크플로우가 실행되지 않을 때 브랜치 이름을 잘못 쓴 경우가 많다는 걸 발견했어요.
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
그다음은 작업(job) 목록이 따라와요. 각 작업에는 이름이 있어요(여기서는 test). 각 작업은 자체 정의를 가지는데, 작업을 실행할 위치(이 작업은 Ubuntu Linux에서 실행돼요)와 취할 단계들로 구성돼요.
jobs:
test:
runs-on: ubuntu-latest
steps:
구체적인 테스트에 대해, 먼저 테스트 대상 저장소를 체크아웃하고, 그다음 새 setup-dart 액션을 실행해요. 이건 Dart SDK를 다운로드해 설치하고, dart CLI와 pub global 디렉터리를 경로에 추가해요. 여기서는 설치할 Dart SDK를 지정하지 않았으니, 액션이 가장 최근의 stable 채널 SDK를 설치할 거예요.
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
그다음 원하는 테스트, 예를 들어 포맷팅, 분석, 단위 테스트를 수행할 수 있어요.
- name: Install dependencies
run: dart pub get
- name: Verify formatting
run: dart format — output=none — set-exit-if-changed .
- name: Analyze project source
run: dart analyze
- name: Run tests
run: dart test
전체 예시는 package:characters용 워크플로우를 참고하세요.
SDK 버전 지정
setup-dart 액션은 설치하려는 Dart 버전을 지정하는 것을 지원해요. 두 가지 형태 중 하나를 쓸 수 있어요.
- 특정 버전, 예:
2.9.0또는2.12.0-259.12.beta - 릴리스 채널의 최신 버전, 예:
stable또는beta
버전을 지정하려면 sdk 인자를 직접 쓰거나 테스트 매트릭스의 일부로 쓰면 돼요.
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
sdk: [2.10.0, stable, beta]
runs-on: $
steps:
- uses: actions/checkout@v2
- uses: dart-lang/[email protected]
with:
sdk: $
이 매트릭스의 결과는 각각 별도로 실행되는 아홉 개의 작업이에요.
모든 것이 통과하면 README.md 파일에 상태 배지(status badge)를 추가해서 테스트 상태를 표시할 수 있어요.
대안 해법
GitHub Actions는 지속적 통합을 위한 여러 인기 해법 중 하나예요. Dart SDK를 지원하는 다른 것에는 Travis, AppVeyor, CodeShip이 있어요. Flutter 앱 테스트를 위한 옵션으로는 Nevercode의 Codemagic, Cirrus CI, Bitrise가 있어요. Flutter 앱용 GitHub Actions는 flutter-action 같은 커뮤니티 기여 액션으로 활성화할 수 있어요.
오늘은 여기까지예요. Dart를 위한 이 새 CI 지원을 즐겨 주시길 바라며, setup-dart에 대한 피드백이나 이슈가 있다면 이슈 트래커에서 알려주세요.
더 알아보기
- setup-dart 액션 — 공식 GitHub Marketplace 액션
- package:characters 워크플로우 — 전체 CI 워크플로우 예시