Flutter

Flutter의 Jenkins 사용법과 CI/CD 설정 방법

wsstar 2025. 3. 30. 09:00
728x90
반응형

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 JenkinsManage 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 ItemPipeline을 선택한 후, 아래와 같이 설정합니다.

  • 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 키 설정

  1. Firebase Console에서 API 키를 생성합니다.
  2. 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 앱 개발 및 배포 환경을 구축해 보세요!

728x90
반응형