-
Notifications
You must be signed in to change notification settings - Fork 49
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
Support for CI/CD pipelines #332
Comments
After today's discussion with @mchrominski the flow of the AET processing with this idea implemented would look like this: The next step should be researching a mechanism that will enable counting hash based on parameters that @mchrominski described above. |
Calculation of the checksum for a project containing 55,000 files (SHA-250/CRC32). Calculation in the standard way of the whole project takes about 60 seconds The first checksum calculation will be performed for all individual files (it will be executed only once during the implementation of the solution) An incremental computed chcecksum can be initialized from Jenkins, post-merge hook or Maven / Gradle.
The incremental calculation of the checksum consists of:
To ensure the possibility of providing information about which files have been changed in the project, consider using Git \ CVS or java service that detects changes in the files (implement the WatchService interface). |
Update |
One more case worth considering:
|
Version used
AET 2.1.7
Context of the issue/feature
With the introduction of Shared Patterns (#121) and later fix for using latest available 'patternSuite' we now have the higher comfort of AET usage within the development lifecycle.
However, it is still unnatural to use AETs within the CI pipeline. When a change is introduced and accepted on a single environment, if there are more environments in the pipeline, same change needs to be accepted on all the subsequent environments.
From my point of view, the test results (similar to expectations in the unit test methods) are closely linked to the source code and can be treated as a code signature. Surely, there are other factors like the environment configuration or the content that influence the tests, but I think it's reasonable to introduce a relation between a code (in given version) and the expected test results.
Similar use case appear in a hotfix process for an already release version. Currently, if a change is applied to an old release, the user first need to (blindly) accept the results of release retesting, then apply the change and look for any regression. Ideally, the first test outcome could be reused from the history making sure the change assessment is accurate.
After conducting couple of design sessions below are findings:
Steps to reproduce
It would be useful to automatically update the pattern, as the expectation has been set up while accepting the change on environment 1. If the change flows through multiple environments, there shouldn't be a need to manually approve the change, if it fits already accepted pattern.
Proposed solution
Let's introduce a function
hash(code)=hash(repo1, repo2, repo3, ...)
which is a hash of all the repositories returning a unique result for every binary state of the repository.While running the AET suite, let's calculate that hash and push it as a parameter to the AET endpoint.
While looking for a pattern to compare to, if the parameter is available, let's first look for patterns that have the hash assigned already, in the database.
If the pattern is accepted, and a hash attribute was provided, let's save it in the database next to the pattern.
If the hash has been reported, but wasn't found in the database, let's find the previously accepted pattern on that environment. To recognise the environment, another parameter (or domainURL) should be provided.
Let's add a new button (or a technial endpoint) that will be clicked (or used while releasing) to mark a pattern we want to save for the future.
Let AET know what is our final-environment that we consider the end of the development pipeline. If a change reaches this environment, it outdates the previous change on that environment making it available to free up.
Other aspects / bucket list for considerations
The text was updated successfully, but these errors were encountered: