Specialized MacOS Images for iOS Frameworks (Flutter, ReactNative, ...)
🕦 Problem: brew update takes 29min with Brewfile
- Our
Brewfiletakes 29min to install desired libraries- Do any other settings matter? Processors? Memory available?
- Other problems include very sensitive errors while installing components to the host
- In this case, I still have problems installing the
dockerengine in the host
- In this case, I still have problems installing the
💡 Alternative Solution
I'm not sure if it's possible, but I'm guessing the community could vote in a couple of solutions:
- Provide specialized images based on Frameworks
-
Flutter -
React Native -
ionic -
...
-
- Basic versions could be provided to speed up the pipeline process
- Similar to Docker Images, Gitlab could provide the images with the same tag format based on the base OS version and framework used
- Users could just include dependencies via
Brewfileor any other dependency management they want to use
DESIGN: Maybe specify a set of Brewfile instances for these target MacOS Images
🐛 Related Issues
- More and more users will hit this same problem as identified on issue https://gitlab.com/gitlab-com/macos-buildcloud-runners-beta/-/issues/140.
- MacOS builds are an extremely long process
🗒 Brewfile for Flutter Apps
- The example below includes basic binaries to Flutter apps
- It includes the basic binaries for iOS
- Flutter framework with version management
- docker engine to reuse tasks implemented in Docker containers
# Install the docker engine using cask https://www.cprime.com/resources/blog/docker-on-mac-with-homebrew-a-step-by-step-tutorial/
# It is brew install --cask docker when using the cmd
cask "docker"
# Creates the symlinks for the engine https://stackoverflow.com/questions/40523307/brew-install-docker-does-not-include-docker-engine/47275246#47275246
brew "bash-completion" # to force symlinks, not working still
brew "docker-completion" # to force symlinks, not working still
brew "docker-compose-completion" # to force symlinks, not working still
# Install coreutils for realpath in case it doesn't exist https://formulae.brew.sh/formula/coreutils
brew "coreutils"
# THIS DEPENDS ON Xcode to be installed
# This is required to make calls to Apple Store to retrieve the AppID for CICD
# 2FA requires the APP ID. We need to automate the retrieval of APPID
tap "mike-engel/jwt-cli"
brew "jwt-cli"
# Dependency management for IO https://cocoapods.org/
brew "cocoapods"
# Required for the Gemfile install of fastlane
#brew "rbenv"
brew "ruby-build"
# Build system for flutter (IOS, Android, WEB) https://docs.fastlane.tools/
brew "fastlane"
# Flutter version management https://github.com/leoafarias/fvm
tap "dart-lang/dart"
tap "leoafarias/fvm"
brew "fvm"
# View the ceriticates https://github.com/ealeksandrov/ProvisionQL
#brew "provisionql"
Edited by Marcello DeSales

