본문 바로가기

Mobile/Flutter

Azure DevOps CI(Continuous Integration)로 Flutter Desktop for Windows Application 자동 빌드하기

Azure DevOps는 github같은 git 저장소, 프로젝트 관리를 할 수 있게 해주는 서비스의 일종입니다. 이전에 VSTS(Visual Studio Team Services)라는 서비스에서 새롭게 개편된 서비스라고 할 수 있습니다. 최근에 들어서 사용하기 시작했는데, github, gitlab에 못지 않은 다양한 기능을 가지고 있어서 쓸만합니다.

이 Azure Devops에서 지원하는 CI를 사용해서 Flutter Desktop App을 빌드해보려고 합니다. CD(Continuous Deployment)도 가능할 것으로 보이는데, 이번 포스트에서는 다루지 않습니다.

시작하기 전에 몇가지 준비사항이 있습니다.

  • Azure DevOps 계정이 있어야 한다. (free plan으로도 개인 repository 를 무제한으로 만들 수 있습니다.)
  • Flutter Windows 개발환경
    • 당연히 Windows 환경 (전 Windows 10을 사용했습니다.)
    • Build Tools for Visual Studio 2019
    • Developer Mode 켜기 (Settings > Update & Security > For Developers > Developer Mode > On)

flutter sdk를 아래와 같이 desktop 빌드 가능환경으로 변경합니다.

d:\>flutter channel dev
Switching to flutter channel 'dev'...
git: From https://github.com/flutter/flutter
git:  * [new branch]      dependabot/bundler/dev/ci/mac/cocoapods-1.10.1 -> origin/dependabot/bundler/dev/ci/mac/cocoapods-1.10.1
git:  + 667b5e2...0a05553 experimental_skshaper -> origin/experimental_skshaper  (forced update)
git:    eb5ab56..737496e  master     -> origin/master
git: Your branch is up-to-date with 'origin/dev'.
git: Already on 'dev'
Successfully switched to flutter channel 'dev'.
To ensure that you're on the latest build from this channel, run 'flutter upgrade'



d:\>flutter upgrade
Flutter is already up to date on channel dev
Flutter 1.26.0-1.0.pre • channel dev • https://github.com/flutter/flutter.git
Framework • revision 63062a6443 (4 weeks ago) • 2020-12-13 23:19:13 +0800
Engine • revision 4797b06652
Tools • Dart 2.12.0 (build 2.12.0-141.0.dev)



d:\>flutter config --enable-windows-desktop
Setting "enable-windows-desktop" value to "true".

You may need to restart any open editors for them to read new settings.



d:\>flutter devices
1 connected device:

Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19041.685]


d:\>

이제 windows 환경이 가능한 새로운 flutter project를 만들고 실행합니다. (프로젝트 폴더 밑에 windows 폴더가 생겨야 합니다.)

flutter create winapp1_flutter
cd winapp1_flutter
flutter run

문제없이 실행되면 아래와 같은 윈도우앱이 실행됩니다.

릴리즈로 빌드하려면 아래와 같이 실행하면 됩니다.

flutter build windows

 

이제 작성한 예제를 Azure DevOps에 올립니다.

git init
git remote add origin git@ssh.dev.azure.com:v3/(your-account)/(your-project)/winapp1_flutter
git add .
git commit -m "initial commit"
git push origin master

 

Azure DevOps 상에서 Pipeline을 사용하기 전에 Flutter extension을 먼저 설치합니다.

  1. Flutter Task 페이지로 이동합니다. (Extensions for Azure DevOps 페이지에서 Flutter로 검색해도 되는데, 비슷한  것들이 여럿 있는데, flutter 명령어가 제대로 동작하는 extension은 제가 찾은 이것만 됩니다.)
  2. Get it free 버튼을 누르고 Orgnization 을 선택한 다음 Install 버튼을 눌러 설치를 진행합니다.

 

다음은 Pipeline 설정입니다. Azure DevOps 상의 Project로 이동해서 Pipelines를 선택하고 다음의 과정을 진행합니다.

  1. Create Pipeline 버튼을 클릭합니다.
  2. Azure Repos Git을 선택합니다.
  3. winapp1_flutter를 선택합니다.
  4. Starter pipeline을 선택합니다.
  5. YAML editor 회면에서 yaml 파일 내용을 다음의 것으로 대체합니다.

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: FlutterInstall@0
  displayName: Install Flutter
  inputs:
    channel: 'dev'
    version: 'latest'

- task: FlutterCommand@0
  displayName: Enable Flutter Desktop Build
  inputs:
    arguments: 'config --enable-windows-desktop'

- task: FlutterCommand@0
  displayName: Build Flutter for Windows
  inputs:
    arguments: 'build windows'
    projectDirectory: '.'

저장을 하고 나면 Pipelines 에 가보면 빌드 중인게 보일겁니다. 

이번 포스트는 여기까지 하겠습니다.