-
-
Notifications
You must be signed in to change notification settings - Fork 12
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
Containerize test generation and run #257
Comments
If this seems like a good approach, I would be happy to work on implementing the solution. |
Things that are very architecture-specific, such as the C++ executor, would be good to containerize. Maybe some of the other executors like Rust or Dart, especially if they depend on very specific compiler setups. However, I don't think it's a good idea to shove the entire runtime into a container (I'm not sure exactly the scope of what you were thinking). I do still think it is good to have our Python scripts (or the thin .sh files around them) be the entrypoints. But, it makes sense if Python invokes a container as an executor and treats it like a native executor (interacting with stdin/stdout). |
Thanks for the feedback @sffc . Yes, I'm proposing the containerizing of the Python scripts etc for test generation and running, not just the executors. I was planning for the executors to run in the same container as the scripts (at least initially), similar to how GitHub Actions runs them currently. Containerizing individual executors sounds interesting though and could be decided separately. My proposal is just taking the existing test generation+run setup (including its single environment execution) and making it more transparent and easily reproducible - on a developer's machine, for example.
Yes, totally agree. I think that a simple entrypoint to test generation and running would make sense, especially for those without Docker experience. I also think a way to opt out of containerization would be a good idea for developers that have all dependencies locally and don't use Docker. e.g.:
This is the basic scope of what I was thinking: (Your suggestion of containerizing the individual executors would mean that the 'Executor deps' could be moved out of this container.) Does this address any of your concerns about putting the run into the container? |
@echeran, @sven-oly and I discussed this. My main concern is that I want to avoid a container in the code-build-debug loop for writing and testing executors. However, I acknowledge that the current scripts we have are very Ubuntu-specific, which isn't great. It would be very nice to remove this barrier to contributors to the project. So what I think we should do is:
This is mostly consistent with what @mradbourne proposed in the OP except:
We're also happy to schedule a meeting to discuss this further. |
That's all clear. Thanks for discussing. |
Challenges
Proposed solution
Use Docker to containerize the test generation and run environment for consistency across local and GitHub Actions pipeline.
Specify all dependency installation and setup in the Docker image definition.
Provide a Python CLI as the main entry point for the project, which abstracts the Docker complexity.
Containerization can be introduced incrementally:
.github/workflows/e2e.yaml
andsetup.sh
.run_config.json
support).$ python conformance.py test --icu_versions=icu74 --test_types=rust
Impact
This solution would introduce Docker as a dependency for the project.
Consolidating the dependency list and setup into the Dockerfile would simplify the project but it would also make Docker an integral part of the setup. There is room in this proposal to keep an uncontainerized version of the setup at the expense of some added complexity.
The text was updated successfully, but these errors were encountered: