-
Notifications
You must be signed in to change notification settings - Fork 1
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
Remove the need of comparison artifact in order to make propagation self-sufficient #60
Comments
TLDR: overall works as expected 👌 The only behavior lost in translation is detection/propagation of deleted group_var/vault variables. Which we could probably live with (at least for now) considering the other advantages these changes bring to the table |
logic before Iterating git history and retrieving versions of variables/resources are longest operations (as you could see from progress bars) There is no
Later this data used during iterating timeline items and gather list of dependent resources/variable to set version to propagate Resources / Variables processed once, but some variables and resource can depend on resources/variables from next timeline item, so iterated again, but everything use already calculated data. Most of the time spend on iterating git and gathering versions, as we open meta.yaml / vars.yaml / vault.yaml in each commit. My suggestion for improvement here is:
|
I didn't consider this and took logic that was working before. I think it's a good change to iterate timeline from newest to oldest, in this case there will be less checks and overrides of version |
Agree on these point, that we can tweak it more. It will concludes into this list:
not a big change for variables, because we parse per file,not per variable. |
Merging current state for real situation testing Let's create another PR for performance optimisation |
Current
cd readme:
In summary, current build is compared with an artifact built from a previous commit to propagate the versions of resources which have changed
Expected
Main idea:
Process could be:
meta/plasma.yaml
using something similar togit --no-pager log -1 --oneline -- integration/flows/roles/account_person_identification/meta/plasma.yaml
(that actually look only to version value and filter out any other change)So if we look back and try to make sense of it all from the start, process could be:
ZZZ
in current dual syntaxXXX-ZZZ
)For variables from vaults, it's a bit more tricky to find out precisely in which commit each var was last changed, considering that git won't be able to tell it as the whole file is encrypted. Therefore it's probably needed to compare with previous vault state untill commit where each var of vault was updated last is found
Performance optimization
Let's consider an example where optimization may be required:
Let's also consider change date for each of these:
Using a standard topological sort to process the graph bottom-to-top and ensuring that children are processed before their parents; will; in this case, result in a lot of iterations:
Meaning resource C will have it's version changed 3 times, whereas 2 of these change may not have been useful, considering only 1 of them will remain.
How can we make sure that no un-necessary processing is performed in such a case ?
Final result
The text was updated successfully, but these errors were encountered: