Dart is a programming language invented by google initially later it is evolved significantly which is used to create Flutter applications, Flutter is an open-source framework that enabled us to create cross-platform applications using a single codebase.
In this blog I am using Azure DevOps cloud to build an application. Install the Flutter extension available in Azure DevOps marketplace. Below are the available tasks for flutter shown in fig (a).
Build pipeline creation in azure DevOps:
Connect the source code repository and configure the pipeline using the pre-defined starter pipeline template fig(b) to write the YAML pipeline. Microsoft hosted agent is used to run the build pipeline.
In this pipeline configuration modified the starter pipeline template by adding the flutter tasks like install the flutter SDK with stable and latest version, download secure files task to download the Keystore file from library shown in fig(c).
Flutter build task is used to build the required application package file in which path to the project directory should be properly mentioned which contains the pubspec.yml. Below fig(d) shows the details of flutter build task used in the pipeline configuration discussed in this blog.
Path to the Flutter SDK is opted default as Flutter Install task is used before the flutter build task. The flavor of the build like development, production should be mentioned in build flavor which should match an Android Gradle flavor. Options like build flavor, package build number, version number, entry point etc. are optional. Default option is opted in the build task Fig (d). Once the build is finished, using a script signing the package file produced by the build.
Similarly, we can use installing Apple provisioning profile, installing Apple Certificate for signing and provisioning, flutter tasks to build iOS app and publish it to pipelines using publish artifact task.
Conclusion:
The integration of Azure DevOps with Flutter for an Android project is covered in this blog, along with a hint of an iOS project.