Monorepo apps
How to build monorepo apps with Codemagic
A Monorepo is a version-controlled code repository that holds many projects in a single repository. Codemagic supports working with monorepo apps. The very first step is creating a Codemagic account and adding your monorepo app from its codebase such as GitHub, Gitlab, Bitbucket, or self-hosted repositories. More information about how to sign up can be found here.
To begin with, codemagic.yaml file must be created in the root directory of the repository. By default, the working directory is the root of the repository. The basic structure looks like this:
workflows:
default-workflow:
name: Default workflow
instance_type: mac_mini_m2
max_build_duration: 60
environment:
flutter: stable
xcode: latest
cocoapods: default
scripts:
# Add scripts here
artifacts:
- build/**/outputs/**/*.apk
- build/ios/ipa/*.ipa
publishing:
email:
recipients:
- name@example.com
In order to target apps inside your monorepo app, working_directory key is used. For example, the following sample snippet shows how it works:
workflows:
default-workflow:
name: Default workflow
# Specify path to the app folder like this
working_directory: my_first_app
By defining working_directory, every command that is defined in the scripts section will run inside that particular directory which is “my_first_app” in our sample above.
In order to manage your working directories easily, it is recommended to create multiple workflows and configure them accordingly:
workflows:
my-first-app-workflow:
name: Drivers app workflow
working_directory: my_first_app
# ...
my-second-app-workflow:
name: Passengers app workflow
working_directory: my_second_app
A sample project can be found here. You can also checkout the blog article How to mange your Flutter monorepo.