-
Notifications
You must be signed in to change notification settings - Fork 0
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
Find Alternative to Template Repo #7
Comments
also consider the role of |
For many experiments, it is likely sufficient to write a suite design file, group_vars for a new host_type, roles to init host_types, and set some variables in host_type all. An example would be to integrate the suite repo as a submodule in the code repo. If a project requires a project-specific feature that requires to adapt more than the things named above, then we could create a feature branch in the suite repo with these changes and select this feature branch in the submodule. |
I agree. I suggest we try the following procedure for anyone using the AWS Experiment Suite
How to find the external
|
I'm not sure I understand you correctly. Basically, I would move the
Loading |
Sorry, I was a bit unclear.
Yes
Yes, that would make sense.
That is a good question. I doubt that you can have a private submodule in a public repo, but I haven't checked. I would have assumed that when we publish some project repo, then without the internal testing and benchmarking tools. Those are anyway configured in our GitHub actions to use our AWS credentials and so on.
Exactly! I would also only just fork it once and try to use the same repo/infrastructure for the whole PPS.
I still have to look at the new version. When I do, I'll check if that would be a cleaner solution. When I tried before, I had to also pull out |
The specific requirement I have in mind is the following: I guess if it is a concern that the pps-fork of the lab goes public (not sure), we could also unlink the submodule and "copy" the code required into the project repository. Creating another "public" fork of the |
One problem that I found is that you cannot have a private fork of a public repository. There are some solutions but not sure if they are practical: example |
An alternative is that we only have a single public repository in the pps lab: Or we have one remote that is public and one remote that is private for development. |
The issue that I see with that is that it will be very tedious to get updates for the |
Oh yes, I forgot about that. I used something similar to what you posted in a lab. It was ok to work with. We just need to carefully document the processes for updating and pushing changes. And push protect But with that solution, also the 1-fork limitation is bypassed. So we could do this for a private and a public repo in PPS and then do the branch-migration workflow to publish evaluation code of a repo. |
Ah, you already suggested something that is similar to what I said above. I would still keep a public |
In summary, the best solution I currently see is the following:
@nicolas-kuechler What do you think? Anything missing? Edit: One thing that maybe doesn't have a nice workflow is pushing some nice general feature from a fork to the official repo. Such things you'd probably need to migrate manually. |
I'm wondering whether the distinction between private and public fork within the pps-lab is really necessary. If we just use the public fork, we are potentially leaking on what kind of project we are working but I don't think that this is too problematic. In particular, because it's also not the main branch but just on some feature branch. Btw. do you have a recommendation for a good name for the project? (I'm not happy with |
Where do you see the drawbacks of the following approach:
The reason I'm a bit cautious with the submodule approach is that I heard that it is not that nice to work with. |
That is something you (and Anwar probably) have to decide. I agree, working with a single branch is easier. But if we document it well, it shouldn't be more than a few commands that one has to enter from time to time to publish a repo. I think it would be doable.
I was also already thinking about something better, the name is not ideal. Brain dump:
I'll tell you if I have some better ideas for a new name. |
If I understand correctly, that would mean that you have to work on two repos:
How do you develop benchmarks? Do you always have to make changes, push them to the private fork, and then trigger the GitHub action in your project repo to see if they work? With submodules, I think you should still be able to run them locally (in case you have the necessary credentials), since everything is in one module. Otherwise, you can make your changes in the subfolder of the module and push them to the feature branch from there, without needing two different repos. Also, the feature branch and the project repo would be nicely linked with the submodule. Otherwise, this connection is more hidden in the GitHub actions? I don't see a major disadvantage, but I also don't really see an advantage over submodules. It tries to solve a very similar problem but imo is a bit less clean and more hacky. |
Apart from
|
Regarding the naming, a lot of the terminology is from experimental design (DOE or DOX) wiki link, hence we could also name it accordingly.
|
Yes. One can configure multiple paths for ansible to search the roles in (src). That shouldn't be an issue.
I was asking myself if we really still need those folders outside of the submodule? Because if every project works on its own feature branch, then it could also add its own files directly to the experiment suite folder structure? But otherwise, the
One thing that I tried out locally was set the custom path in Some of the differences can be solved with the inventory file, since we can use a different one in the repo than what users would use with their files outside of the repo. But we have to check if that still works now that the inventory file is generated. I'm not so sure anymore that it is much cleaner when we take those files out of the repo. What do you think? |
Makes sense to me. Personally, I prefer DOE over DOX because the later reminds me of a file extension (e.g., |
I still think personally that it is cleaner to have the additional files outside of the repo.
I don't think we should have a feature branch per project and instead, we should only have such a feature branch if we require a specific functionality within DOES. If you just want to run a regular experiment, then using the main branch of DOES-PPS should be sufficient. |
Okay, then let's do something with: The fork could then be named: |
Ah, I see. Yes, that does sound cleaner. With this workflow, we could give
And then one variable in |
I like the folder structure, but not sure about this point:
Ideally, I think it would be good that by default you don't have to change anything in Checking both feels a bit brittle and not really clear to the user because you are trying to access I have three options in mind and I'm not sure if they work and what is the best choice:
I think I like |
Yes, the idea was to use the same structure for all your projects. But I recon that changing the fork is not the nicest setup. To your proposed versions:
Proposal for V4:
I favor V2 and V4 at the moment. |
I think V4 is a good idea. I was thinking a bit more about how to place/structure the demo project within the
What do you think? |
Conceptionally, this sounds good to me. Do I understand correctly, that I would have to try out if this works out with ansible. I guess we should use |
yes! An environment variable points to |
@nicolas-kuechler FYI: I am finally trying this approach on the |
* [WIP] ansible controller: untested implementation of setup and config; need to solve repo forking first before testing * Fixing setup and SSH keygen. Still WIP * replace deprecated ec2 role with ec2_instance * WIP bugfixing aws-controller * WIP bugfixing aws-controller, updating git/aws key generation * Fix regression bugs from rebase (mainly the tagging of instances) * Fix awscli, boto3, and ansible installation * Add untested roles to install seal and abc * Restructure repo as discussed in #7 * Removed deprecated examples * Fix demo example * Update repotemplate for project dir environment variable * Fix result storage * Remove pps specific roles * Fix minor bugs from restructuring * Fix bug from rebase Co-authored-by: Miro Haller <[email protected]>
The text was updated successfully, but these errors were encountered: