-
Notifications
You must be signed in to change notification settings - Fork 9
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
Start investigating the CI/CD #1003
Comments
Firstly, I set up a CI on a single machine with a single GitHub runner, using a Tart virtual machine. The problem was that there was no parallelization, which meant that workflows took a long time to complete. Then, I made the process more complex by adding a second runner on the same machine. The problem was that I had to manage concurrent writes for certain jobs, such as the iOS and tvOS tests, which write to the same folder (Derived Data). Finally, I added two GitHub runners on another machine, so I now had two runners on the first machine and two on the second. The issue, was that my first job started a virtual machine on the first machine, but the second job could potentially use the second machine, which had no knowledge of the virtual machine, as a result, my workflow was failing. I then tried to group my machines together using Orchard. The next issue, was that I couldn't use So I opted for another approach using labels. The first and second machines each have a specific label for the different files. The problem with this solution is that once the first job starts on one machine, the entire workflow remains confined to that machine until the end, which prevents the resources of the other machines from being used. |
Running tests simultaneously causes a failure because both jobs (test-ios and test-tvos) attempt to write to the same location. To bypass this issue, one solution is to update our Fastfile to separate the derived data into two distinct directories as show below: def run_package_tests(platform_id, scheme_name)
output_path = "fastlane/test_output_#{platform_id}"
derived_data_path = "#{Dir.home}/Library/Developer/Xcode/DerivedData/#{platform_id}"
FileUtils.mkdir_p(output_path)
FileUtils.mkdir_p(derived_data_path)
run_tests(
scheme: scheme_name,
device: DEVICES[platform_id],
package_path: '.',
result_bundle: true,
output_directory: output_path,
derived_data_path: derived_data_path,
number_of_retries: 3,
fail_build: false,
xcargs: '-testLanguage en -testRegion en_US'
)
trainer(
path: output_path,
output_remove_retry_attempts: true,
fail_build: false
)
end |
As a Pillarbox developer, I would like to understand what the best option is for our CI/CD.
Acceptance criteria
Tasks
Tart
with us.Tart
and its environment (how it works).Tart
.Tart
.Tart
takes to:The text was updated successfully, but these errors were encountered: