Flutter build task for Azure DevOps.
All credit goes to the original author for his awesome work. This extension is a personal fork of fork of (https://marketplace.visualstudio.com/items?itemName=hey24sheep.flutter) which is itself a fork of Alois Deniel's extension Github
Installation can be done using Visual Studio MarketPlace.
Source code can be found on Github.
Original repo : Github. Forked from: Github.
Add the tasks to your build definition.
Installs the Flutter SDK onto the running agent if not already installed. Then uses it for following tasks.
- Select the
channel
:stable
(default),beta
, ordev
. - Select the
version
of the SDK to install:latest
(default),custom
. Ifcustom
is specified, acustomVersion
must be set. - (Optional). Set the
customVersion
(in a<M>.<m>.<p>
semver format) if needed.
Build the given mobile application project. You must call the Flutter Install
task or use the optional flutterDirectory
task input that points to your flutter/bin
folder before execution. All application bundles are created in the build/outputs
folder of your project.
- Select the
projectDirectory
that contains thepubspec.yaml
file. - Select the
target
platform. Options are:apk
(default),aab
,ios
,web
,all mobile
(all mobile platforms only),desktop (windows)
,desktop (macos)
,desktop (linux)
,all desktop
(all desktop platforms only) ,all
(all platforms). - (Optional). Set
flutterDirectory
to set path to the Flutter SDK if you were not usingFlutter Install
task before this one - (Optional). Set
buildName
(like1.2.3
) that will override the manifest's one. - (Optional). Set
buildNumber
(like12
) that will override the manifest's one. - (Optional). Set
buildFlavour
(likedevelopment
) to specify a build flavour. Must match Android Gradle flavor definition or XCode scheme. - (Optional). Set
entryPoint
to override the main entry point file of the application. Default is 'lib/main.dart'. - (Optional). Set
verboseMode
if you wish to get detailed verbose log output for diagnoses purposes. Default isfalse
. - (Optional). Set
debugMode
if you wish to override the default release mode for the build. Default isfalse
. - (Optional). Set
dartDefine
compile-time variables. Example: "Some_Var=Some_val --dart-define=Some_Var2=Val" - (Optional). Set
extraArgs
if you want to pass more official/custom command arguments. Example: "--no-tree-shake-icons --publish-to-play" - (Android).(Optional). Set
apkTargetPlatform
for the Android platform architecture target:android-arm
(default),android-arm64
. - (Android).(Optional). Set the build mode
splitPerAbi
to compile the code into an APK per target ABI. Otherwise the build will result in a single APK. - (iOS).(Optional). Set
iosTargetPlatform
for the iOS target:device
(default),simulator
. - (iOS).(Optional). Set
iosCodesign
to configure whenever the bundle odesign the application bundle (only available on device builds, and activated by default). Warning: you must install a valid certificate before build with theInstall an Apple Certificate
task
Launch tests and publish a report as build test results.
- Select the
projectDirectory
that contains topubspec.yaml
file. - (Optional). Set
testName
as a regular expression matching substrings of the names of tests to run. - (Optional). Set
testPlainName
as a plain-text substring of the names of tests to run. - (Optional). Set
updateGoldens
: whethermatchesGoldenFile()
calls within your test methods should update the golden files rather than test for an existing match. - (Optional). Set
generateCodeCoverageReport
to generate code coverage report based on tests in the project. The report file is located in the specifiedprojectDirectory
incoverage/lcov.info
. - (Optional). Set
concurrency
to specify the number of concurrent test processes to run. Default is6
.
Launch analyze on flutter directory.
- Select the
projectDirectory
that contains thepubspec.yaml
file. - (Optional). Set
pubGet
if you wish to runpub get
command before analyze. Default istrue
.
Launch a Flutter command with custom arguments.
- Set
arguments
to the argument string to pass to the flutter command. Wrap the string in single quotes. - (Optional). Select the
projectDirectory
that contains thepubspec.yaml
file.
e.g. to analyze dependencies to find which ones can be upgraded:
- task: FlutterCommand@0
displayName: 'FlutterCommand analyze dependencies inc. prereleases'
inputs:
arguments: 'pub outdated --prereleases'
Flutter command isn't recognized ?
Make sure that you have a Flutter Install
at the beginning of your definition.
Can I run a custom Flutter command ?
Yes, right after the Flutter Install
task, a FlutterToolPath
environment variable points to the bin
of the Flutter SDK directory. You just have to use $(FlutterToolPath)
in your following tasks. Example: "$(FlutterToolPath)/flutter packages get"
Can I run Dart program ?
Yes, actually a Dart runtime is embedded with Flutter tools (in the /cache/dart-sdk/bin
subdirectory).
A task example :
- task: CmdLine@2
displayName: 'Execute Dart program'
inputs:
script: '$(FlutterToolPath)/cache/dart-sdk/bin/dart program.dart arg1 arg2'
workingDirectory: 'src'