-
Notifications
You must be signed in to change notification settings - Fork 57
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
Orchestration Pipeline: Merge released code back into main branch #367
Comments
Hey @michaelsauter - thanks for writing it down
yes! (a map with change & commit & env would be great) ... as we commit and export on Q/P
On assembly .. non WIP |
Hi @michaelsauter @clemensutschig , the issue gets even more complicated with the generation of the LeVA docs and the requirement that we might regenerate an already created document (e.g. SSDS or CSD) if we had to do a hot fix. Materializing some of the information in the release manager repo for example, is something that we might need to do already when enabling versioning. What we are seeing implementing the feature is that if we have a change (e.g v. 2) that was already deployed into Q, but we need to do a Hotfix (v. 1.0.1) to the productive system, we would need to force the "restart" of the release 2.0, adding the hotfix changes to avoid adding again the bug. Restarting the release for the v2.0, we would have the changes from PROD and generate consistent documents. IMO we should do the check at the start of the pipeline, providing fast feedback to the users. If the merging fails, we can create a bug in JIRA and fail the pipeline so the user knows that he needs to take action. Keep in mind that restarting the release (something that we already support, at least via the Jira plugin) will mean that the users do a "Developer Preview/WIP" run before releasing officially into dev, allowing them to fail fast, and in the official release process. We are currently discussing internally options that could provide more flexibility, but as far as I have seen, there might be no other option to restart the release process from the begging to avoid putting the applications into an inconsistent state. FYI @metmajer |
@martsec I am not sure I fully understand your point.
A hot fix would be done on a release branch, so you'd just build the same technical version again, but using a difference change ID. In order to get the hot fix into PROD, you first need to assemble in DEV, then promote to QA, then to PROD. Which means you anyway generate new documents, right? To me it looks like this "feature" is built-in already?
That would be detected when going with 2.0 to PROD by my proposal with the check mentioned in (2). I don't see another way of "resetting". If 2.0 was successfully released to QA once, we cannot "undo" that - we can only prevent that the user can go with that outdated state to PROD. Right? One improvement might be that we tell the user somehow that a certain version has become stale e.g. by creating an issue in Jira how you mention. So I am not sure if you agree with my proposal or think that it is not enough :) If the latter is true - what case am I missing? |
The issue here is that some documents are already signed in the document management system and thus, simply replacing them won't suffice. So when you have a release in QA, some of the documents you have generated are "productive" and valid. And you need to start with them for a given document (they need to be self-contained, including its history) I'm working on a way to explain our concerns more visually and clearly, so we can also use it to explain the solution.
Yes, we should check that we have the same changes. What I see though (and maybe it is the same you are saying), is that we should:
Don't get me wrong, I like your proposal, but recently I have discovered the limitations we have with the documentation, that can make a couple of things change. Today I explored more this topic with the main stakeholders on the compliance part, and I plan to work on having a good solution that can meet the requirements for all parts. |
@martsec Cool. Looking forward to the visual explanation, that will help. I think regarding the merging, we are saying the same thing :) |
Now that I think of it, this might be thought as a race condition to PROD between the documents and the software (code) of multiple versions. |
@martsec any drawing yet.. we want to build this. |
I wanted to double check with the different stakeholders before sharing it. The situation:
Why this happens:
The diagram tries to illustrate the situation. Time goes down and it is a simplification that does not cover DEV and QA environments nor the status of the master branch. The self relations indicate the status of a given element. Another way to represent it is thinking about the links to the previous versions:
In my opinion @clemensutschig it is better if I can explain it in a 15-30 min call so I can explain thinks I might have missed in the explanation. Anyway, I think the implementation of this is not really difficult, since we can manage the state of the documents that are in valid in the document tracking issue in JIRA. |
This is pretty similar what @metmajer and I came up :) we have three topics to cover
I want to follow this up with QA today - so we have one aligned view .. - done .. they are happy!° |
Follow up from #364:
I think we are actually with two distinct issues here. For the sake of simplicity, we assume that the configured branch is
master
.If a developer makes a change only in a release branch, the change would not be included in the next release branch unless explicitly merged to
master
before that next release branch is created. Only in rare cases this actually is desired: if the changed code only applies to code in the release branch, but does not apply tomaster
. In general, we want the orchestration pipeline to integrate the changes in the release branch back intomaster
. This should probably happen in assemble mode in D, for the reason that any code change on a release branch would need to be assembled again in D. Between Q and P, no code change is allowed. Note that merging the release branch intomaster
might fail when there are merge conflicts. In that case, the user must solve them manually, push the merge commit tomaster
, and then start assembly again.Code that was on production should not be "lost" the next time we go to production. This should be covered by (1), but it would be good to verify that the release branch contains all code currently on Q/P when deploying a new release branch to Q/P. The check is crucial as one might need to integrate changes from one release branch to another - just integrating into
master
doesn't cut it. You might have a hot fix in a currently released branch when someone else already created a new release branch frommaster
.A couple of open topics:
FYI @martsec @clemensutschig @metmajer Any comments? Ideas?
The text was updated successfully, but these errors were encountered: