Flutter의 Jenkins 사용법과 CI/CD 설정 방법
Flutter 앱 개발에서는 Jenkins를 사용하여 빌드, 테스트, 배포 프로세스를 자동화할 수 있습니다. Jenkins는 오픈소스 CI/CD 도구로, 플러그인을 활용하여 Flutter 프로젝트의 빌드 및 배포를 유연하게 관리할 수 있습니다.
이 글에서는 Jenkins를 활용하여 Flutter 프로젝트의 CI/CD 환경을 구축하는 방법을 설명하고, 자동화된 빌드 및 배포 설정 방법을 소개하겠습니다.
1. Jenkins란?
Jenkins는 자동화된 빌드 및 배포를 지원하는 오픈소스 CI/CD 도구입니다. 플러그인을 활용하여 다양한 환경에서 Flutter 프로젝트를 손쉽게 빌드하고 배포할 수 있습니다.
Jenkins를 활용하면 다음과 같은 장점이 있습니다.
- 자동화된 빌드 및 테스트: 코드 변경 시 자동 실행
- 다양한 환경 지원: macOS, Linux, Windows에서 실행 가능
- 유연한 플러그인 시스템: Firebase, Google Play Store, App Store 배포 가능
이제 Jenkins를 사용하여 Flutter 프로젝트의 CI/CD 환경을 설정하는 방법을 살펴보겠습니다.
2. Jenkins 환경 설정
(1) Jenkins 설치
Jenkins는 macOS, Linux, Windows에서 사용할 수 있습니다. 다음 명령어를 사용하여 Jenkins를 설치합니다.
# Ubuntu / Debian 기반
sudo apt update
sudo apt install openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
# macOS (Homebrew)
brew install jenkins-lts
설치 후 Jenkins를 실행합니다.
sudo systemctl start jenkins
sudo systemctl enable jenkins
(2) Jenkins 플러그인 설치
Jenkins 대시보드에서 Manage Jenkins
→ Manage Plugins
로 이동하여 다음 플러그인을 설치합니다.
- Pipeline: CI/CD 파이프라인 관리
- Git: GitHub 및 GitLab 연동
- Flutter: Flutter 빌드 및 테스트
- Fastlane: 앱스토어 배포 자동화
3. Jenkins에서 Flutter 빌드 및 테스트 설정
(1) Flutter 설치
Jenkins 서버에서 Flutter를 설치합니다.
git clone https://github.com/flutter/flutter.git -b stable --depth 1
export PATH="$PWD/flutter/bin:$PATH"
flutter --version
(2) Jenkins Job 생성
Jenkins 대시보드에서 New Item
→ Pipeline
을 선택한 후, 아래와 같이 설정합니다.
- Build Triggers: "GitHub hook trigger for GITScm polling" 활성화
- Pipeline: "Pipeline script from SCM" 선택
- Repository URL: GitHub 저장소 URL 입력
(3) Jenkins Pipeline 설정
Flutter 프로젝트의 루트 디렉토리에 Jenkinsfile
을 생성하고 다음 코드를 추가합니다.
pipeline {
agent any
environment {
FLUTTER_HOME = "/usr/local/flutter"
PATH = "${env.FLUTTER_HOME}/bin:${env.PATH}"
}
stages {
stage('Checkout') {
steps {
git 'https://github.com/YOUR-USERNAME/YOUR-FLUTTER-PROJECT.git'
}
}
stage('Setup Flutter') {
steps {
sh 'flutter --version'
sh 'flutter pub get'
}
}
stage('Run Tests') {
steps {
sh 'flutter test --coverage'
}
}
stage('Build APK') {
steps {
sh 'flutter build apk --release'
}
}
}
}
이제 Jenkins에서 빌드 및 테스트가 자동으로 실행됩니다.
4. Firebase App Distribution을 활용한 배포
(1) Firebase API 키 설정
- Firebase Console에서 API 키를 생성합니다.
- Jenkins 환경 변수에
FIREBASE_API_TOKEN
을 추가합니다.
(2) Firebase 배포 설정 추가
Jenkinsfile에 Firebase 배포 단계를 추가합니다.
stage('Deploy to Firebase') {
steps {
sh '''
firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk \
--app YOUR_FIREBASE_APP_ID \
--groups internal-testers \
--release-notes "New release from Jenkins"
'''
}
}
5. Google Play Store 자동 배포
Jenkins를 사용하여 Flutter 앱을 Google Play Store에 자동으로 배포할 수 있습니다.
(1) Fastlane 설치
gem install fastlane
(2) Fastlane 배포 설정 추가
stage('Deploy to Google Play') {
steps {
sh '''
fastlane supply --json_key play-store-key.json \
--package_name com.example.app \
--track internal
'''
}
}
6. iOS 앱 빌드 및 배포
Jenkins를 사용하여 iOS 앱을 빌드하고 TestFlight 또는 App Store에 배포할 수 있습니다.
(1) iOS 빌드 실행
stage('Build iOS') {
steps {
sh 'flutter build ios --no-codesign'
}
}
(2) App Store Connect 배포
stage('Deploy to App Store') {
steps {
sh '''
fastlane deliver --ipa build/ios/iphoneos/App.ipa \
--app_identifier com.example.app \
--username your-apple-id
'''
}
}
결론
Jenkins를 활용하면 Flutter 앱의 CI/CD를 효율적으로 자동화할 수 있습니다.
- Jenkins Pipeline을 사용하여 빌드 및 테스트 자동화
- Firebase App Distribution을 활용한 내부 배포
- Fastlane을 활용한 Google Play Store 및 App Store 배포
이제 Jenkins를 활용하여 더욱 효율적인 Flutter 앱 개발 및 배포 환경을 구축해 보세요!
'Flutter' 카테고리의 다른 글
Flutter의 버전 관리(Versioning) 방법과 전략 (0) | 2025.03.30 |
---|---|
Flutter의 Fastlane 사용법과 자동 배포 설정 방법 (0) | 2025.03.30 |
Flutter의 Travis CI 사용법과 CI/CD 설정 방법 (1) | 2025.03.30 |
Flutter의 Codemagic 사용법과 CI/CD 설정 방법 (1) | 2025.03.29 |
Flutter의 Bitrise 사용법과 CI/CD 설정 방법 (0) | 2025.03.29 |