-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RUM-4079 chore: Migrate lint, tests and ui-tests to GitLab #1910
Conversation
9fdbb1f
to
3a0f1da
Compare
3a0f1da
to
f832ba1
Compare
2a7ea33
to
410d9a2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nicely done, left some improvement suggestions but nothing blocking.
Great job π
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well done π π I like the argparse.sh
and echo_color.sh
π utilities!
- fix conditional trigger by using `changes:path:compare_to:` - `set -e` in all scripts - add `--os` to `runner-setup.sh` - use `xctrace list devices` to list available simulators
4f9e22a
to
33586e9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
π
What and why?
π¦ π§° This PR migrates a significant portion of our CI setup to GitLab:
The following integrations are still running on Bitrise:
I will address the remaining items in subsequent PR(s).
How?
General Remarks:
macos:sonoma
runner, which currently lacks some components. I plan to update the AMI; however, in the meantime, missing components are installed at runtime and persisted, minimizing setup times..sh
scripts, I employed argparse-sh via my fork argparse-zsh.Makefile
GitLab integrates changes through
make
commands, structured as follows:Main motivations for the Makefile design:
List of key commands:
make env-check
- Validates the presence of required CLI tools and displays their versions.make repo-setup
- Prepares the repo for development and testing (ENV="dev" | "ci").make clean
- Resets the repository state, clearing prebuilt artifacts and configurations.make lint
- Lints SDK and tests code.make license-check
- Ensures Apache 2.0 license headers are present.make test
- Runs unit tests based on specified parameters (SCHEME, OS, PLATFORM, DEVICE).make test-ios
- Runs iOS Simulator unit tests for a specific scheme.make test-ios-all
- Runs iOS tests for all schemes.make test-tvos
- Runs tvOS Simulator unit tests for a specific scheme.make test-tvos-all
- Runs tvOS tests for all schemes.make ui-test
- Runs UI tests based on specified parameters (TEST_PLAN, OS, PLATFORM, DEVICE).make ui-test-all
- Runs UI tests for all test plans.make ui-test-podinstall
- Prepares the UI Tests project for development.make models-generate
- Generates models from rum-events-format.make models-verify
- Validates models against rum-events-format.CI Parallelisation
The CI setup is designed to be efficient and modular, with three sequential stages containing multiple parallel jobs. The motivations are:
We split UI Tests into four distinct plans: "Default", "CrashReporting", "NetworkInstrumentation", and "RUM". Current job durations are optimal, hence further optimizations like caching are considered premature at this stage:
Review checklist
Custom CI job configuration (optional)
tools/