Skip to content
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

docs: add initial release process description skeleton #519

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

SebastianBezold
Copy link
Contributor

Description

This PR is an initial effort to formally describe our release process.
Due to the nature of Tractus-X, the release process documentation is split in a "product-" and a "Tractus-X" release documentation.

README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
README.md Outdated Show resolved Hide resolved
docs/product_release.md Outdated Show resolved Hide resolved
docs/tractus-x-release.md Outdated Show resolved Hide resolved
@@ -0,0 +1,18 @@
# Product Release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's worth mentioning that products have their release processes and to refer to the according product specific repositories for information about those.


- Defined in TRGs
- Responsibility of every contributor
- (Additonally verified in quality gate process. TBD, if kept after consortia)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in Additonally but mainly I'd not mention consortia, may just:
Currently still verified in a Quality Gate process. TBD if this process will continue.


<!-- How are products (considered to be) integrated in the Tractus-X release -->
- Prior to release, a Tractus-X umbrella Chart release candidate branch is created
- Producs issue PRs with their release candidate
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be the future process, right? currently that's not happening and maybe that should be mentioned.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes exactly, that's why I opened this draft PR. Jumpstarting this discussion is highly needed in my opinion.
Since this process will rely heavily on committers to support it, we need to come to a basic agreement.
The two bullet points are just a first idea, that could also make it easy for committers to support that process, since it's a more opt-in focused one.

Right now, I don't really find the time to continue working on the draft

docs/planning.md Outdated Show resolved Hide resolved
docs/planning.md Outdated Show resolved Hide resolved
docs/planning.md Outdated Show resolved Hide resolved
we encourage every component team to break these issues down to their component repositories/projects.
When doing so, make sure you link to the overarching issue in your component issue description.

## Release Management Acceptance Criteria
Copy link
Contributor

@RolaH1t RolaH1t Feb 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO everything from here on is not confirmed yet

## Artifacts

- Container images
- Helm Chart
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shall we call these "Product Helm Chart" => to differentiate from "Umbrella HC" in TX-Release?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Product Helm Chart with Dependencies

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would "Helm Chart (referred to as product Chart)" be fine?.
Both, the Tractus-X Chart, as well as single product Charts do have dependencies.
Some do only include a Database dependency, but some also provide frontend and backend as separate Charts, that are then referenced in a product umbrella Chart

- Defined in TRGs
- Responsibility of every contributor
- (Additonally verified in quality gate process. TBD, if kept after consortia)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

process abstract

Once planning activities for a certain iteration are completed: all contributors follow their state-of-the-art feature work on all issues in status work in progress. The vehicle of product helm charts shall be used to integration-test any dependencies. All valid TRGs shall be followed, as those are crosschecked by committers upon merging any pull request - leading into a flawless GitHub release per product.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite sure, but AFAIK, only overarching features on the dataspace level are planned in sig-release and therefore are handled on a board with work in progress status.
Product features, that support the dataspace feature, could (and IMO should) be planned on product repository level. So far, we do not define rules for how products need to handle issues and boards

Copy link
Contributor

@RolaH1t RolaH1t Mar 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update @stephanbcbauer & @RolaH1t 21-Mar:
Once planning activities for a certain iteration are completed: all contributors follow their state-of-the-art feature work on all issues in status work in progress. The vehicle of product helm charts shall be used to integration-test any dependencies. All valid TRGs must be followed, as those are crosschecked by committers upon merging any pull request - leading into a flawless GitHub release per component. This is specifically identified by a version tag.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"state-of-the-art feature work" sounds a bit bloated, don't you think? What does that even mean 😁?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RolaH1t and @stephanbcbauer,
I took your input and did elaborate an change wording. What do you think of the description in this commit
c33fcc8?

docs/tractus-x-release.md Outdated Show resolved Hide resolved
<!-- How are products (considered to be) integrated in the Tractus-X release -->
- Prior to release, a Tractus-X umbrella Chart release candidate branch is created
- Producs issue PRs with their release candidate

Copy link
Contributor

@RolaH1t RolaH1t Feb 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

abstract

Once feature work on product level is initiated, the quality assurance runs in parallel. The vehicle of Umbrella helm charts is used to continuously test pre-defined product bundles.
?pre-definition: how & who?
?reference onion rings?
Example for cxOS: A configured umbrella helm chart starts-up all relevant components (environment-less!) - no matter if carry-over versions of a previous TX release or evolutions of the current iteration. User Journey tests (e2e) are automatically performed - customized for the respective bundle of components and within given boundary conditions.
!there is work to be done!
Any findings ale looped back to the product development teams.
?how?
Product teams are obliged to fix any defects which prevent successful testing of the bundle (see product release process).
A bundle is ready for TX release, once product feature work is completed for all components and e2e-testing was successful without critical findings.
?definition?
Additional, manual e2e tests may apply.
!wip!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good input. I'll see if I can form that to specific sections once I finally find some time for it again. I will try to avoid some of the terms you used though. Some are not (yet) known in Eclipse Tractus-X and would need too much explanation. I.e.:
cxOS -> If there is nothing provided by the association that we can reference, we we would need to re-specify, which is error prone and might diverge from their definiition.
onion rings -> meaning? relevance?
carry-over versions -> not sure what is meant with that
boundary conditions for bundles -> what are these conditions, who defines them, where can I read about it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the pictogram of "onion rings" shall be published near term, also via association, with regards to test management. will add the link here as soon as available. @danielmiehle any additional info?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

carry-over: in every quarterly TX release, we shall expect evolutions (new versions) of some cxOS components,
but also some other components may NOT face a change/up-revision in the given iteration. Nevertheless those components are still essential parts of the bundle.
This is what I meant with "carry over versions"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

text suggestion @stephanbcbauer & @RolaH1t 21-Mar:
Once feature work on product level is initiated, the quality assurance of the foreseen release package runs in parallel. The vehicle of Umbrella helm charts is used to continuously test pre-defined product bundles. Automatically and environment-less.
Reference onion rings: (add URL)

Note: In every quarterly TX release, we shall expect evolutions (new versions) of some components (see "product_release.md"). But also some other components may NOT face a change/up-revision in the given iteration. Nevertheless those components are still essential parts of the bundle.

Example for cxOS (https://catena-x.net/fileadmin/_online_media_/231006_Whitepaper_Tractus-X.pdf (https://catena-x.net/fileadmin/_online_media_/231006_Whitepaper_Tractus-X.pdf):
A configured umbrella helm chart starts-up all relevant components. No matter if carry-over versions of a previous TX release or evolutions of the current iteration. User Journey tests (e2e) are automatically performed - customized for the respective bundle of components and within given boundary conditions.
Any findings ale looped back to the product development teams.
Product teams are obliged to fix any defects which prevent successful testing of the bundle.
A bundle is ready for Tractus-X release, once product feature work is completed for all components and e2e-testing was successful without critical findings.

Additionally, manual e2e tests may apply. Environment and execution tbd.

Copy link
Contributor Author

@SebastianBezold SebastianBezold Mar 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get the idea of this description, but to me it almost seems like this is talking a different language, than I would expect from this process definition.
In commit c33fcc8 I started a process definition, that I think could make sense. It is not finished though and is also just a proposal, that we must discuss in the comitter round.

As general suggestion for wording, I would avoid terms, that are unknown, undefined or not commonly used.
I.e. carry-over, evolution, up-revision.
I would also avoid the "what is NOT happening" statements. Instead of "maybe there are no changes, but we still need it", I would just state, that we are testing all components in the version, that is planned to be included in the release

- __Done:__ All relevant parts have been implemented and released

### Issue process

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is done by every team individually.
Point out that this is a base, but see the product specific descriptions if they exist.

Copy link
Contributor Author

@SebastianBezold SebastianBezold Feb 28, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely good point, but the planning.md file is actuall just a move of some already existing README.md content.
If the current wording is misleading, we should fix that in a separate PR, that can be finished sooner than the Release Process discussion.

@@ -0,0 +1,21 @@
# Tractus-X Release

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: ##Intro
As mentioned in [planning.md] a Tractus-X release is scheduled quarterly. The Tractus-X project has an overarching qualification process that all official quarterly Tractus-X releases adhere to. This process applies E2E activities for testing and security (relevant release candidates in compound) that stakeholders can build on. Each component can/shall be released on demand on a higher cadence, see [product_release.md].

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From my point of view, the E2E and Security part need to be clarified.
To the best of my knowledge, the Tractus-X project does not have any running and persistent infrastructure, that is necessary to support the E2E and Security activities, that are currently mainly driven by the Catena-X consortia.
Also, the automated e2e-testing activities are still far from making the manual steps unnecessary.

So in my opinion, we need to find some middle ground for what is actually supported by Tractus-X and what is a Process driven by other players, like the Catena-X association or others, that is maybe to a certain extend supported by Tractus-X contributors and committers

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct - but what we try to describe here is future target condition (to give guidance).
For sure, exceptions can be formulated afterwards or in addition - for example for May and Aug 2024.

docs/planning.md Outdated Show resolved Hide resolved
While every repository in the [eclipse-tractusx](https://github.com/eclipse-tractusx) GitHub organization
has its own issue management, the [Release Planning Board](https://github.com/orgs/eclipse-tractusx/projects/26)
is used to align the overarching Tractus-X releases.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest adding in a new paragraph:

Release Cycle - major vs. minor release

Tractus-X operates on a quarterly release cycle. Each quarter, a new Tractus-X release tractus-x-release.md following CalVer is released. Each Tractus-X release contains multiple products product_release.md Once per year, Tractus-X releases a major release, making the remaining three releases minor releases. A major release may contain critical breaking changes that have a major impact on data space participants,
such as changes to enablement services. A minor release contains backward compatible functionality. In addition, patch versions provide backward compatible bug and security fixes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @HFocken,
I also heard that, but actually never saw that in a tangible way.
At least "major" and "minor" is not directly visible in CalVer numbers as it would be in SemVer. Is it always the last release of a year, that will contain breaking changes?
How is this ensured in the planning process? Do issues from open planning also contain something that makes that transparent?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Never heard of this too. Definitly something we should highlight more in our Release Notes @RolaH1t

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use text here AND on github.io page to initially introduce users to process.
add picture of phases.

@SebastianBezold
Copy link
Contributor Author

Hi @evegufy, @RolaH1t, @HFocken and @jzbmw

Thanks a lot for your feedback so far. Unfortunately I do not have enough time right now to fully work on enhancing this PR.
Also, I find it difficult to encorporate some of your comments, because lines between association and Tractus-X are not clearly defined. Tractus-X is an independent project, that cannot be controlled by other entities. Some of the suggestions and also the linked PDFs do link to a different direction.

FYI @danielmiehle @giterrific @stephanbcbauer @Siegfriedk


- __Labels:__ We use them to indicate the involved teams (kit or foss component). A label for each involved component is added to an issue
- __Issue Type:__ To separate between bugs, feature requests and release criteria, we use a custom field `Issue Type`
- __Milestone:__ Every Tractus-X release is represented by a `Milestone`. You can use this field to get a rough idea about the ETA
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete "You can use..."

### Issue process

Every new feature proposal or bug report will be handled as issue in status `Inbox` initially. The alignment meetings are used to discuss the purpose and impact of the current issues.
While in `Inbox` status, the involved components are discovered and respective `Labels` are added. If already possible, a desired `Milestone` can be set.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete "If already..."

While in `Inbox` status, the involved components are discovered and respective `Labels` are added. If already possible, a desired `Milestone` can be set.
Additionally, an `Assignee` is selected, who will coordinate efforts to solve the issue.

After these details are clarified, an issue is moved to `Backlog` to open it for detailed timeline planning. In this status, discussions about a fitting `Iteration` is held.
Copy link
Contributor

@RolaH1t RolaH1t Mar 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fully refined status "backlog" is the entry point for our "open planning" ceremony.
During "open planning" a milestone is set for each feature. This represents a comittment, given by the open source community to finalize the feature in due time.

As soon as actual work is started in the selected iteration, the issue is set to `Work in Progress`. This is especially helpful on our project milestone views to get an overview of the release progress.

The final status `Done` is set, as soon as all relevant implementations are done, tested and released. This has to be achieved for every change in every involved component.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add new section:
###Issue hierarchy
@stephanbcbauer to formulate details => detailled features are planned and executed within the repositories of the respective component. Summary features are planned and managed on "SIG release" level...

Copy link
Contributor

@RolaH1t RolaH1t left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like and support the overall text proposal

# Product Release

Tractus-X products do follow their own release process. Please check the leading product repositories for details.
Independent of the technical details of product release processes, the released artifacts and minimum level of quality ensurance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assurance

Independent of the technical details of product release processes, the released artifacts and minimum level of quality ensurance
is the same across all of them.

The release contents for individual products are are planned in the [open refinement and planning](./open-refinement-and-planning.md) sessions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are are => are

is the same across all of them.

The release contents for individual products are are planned in the [open refinement and planning](./open-refinement-and-planning.md) sessions.
These sessions define the scope for all dataspace components, but therefore paint a clear picture of enhancements necessary for every single product.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"and" instead of "but"


The release contents for individual products are are planned in the [open refinement and planning](./open-refinement-and-planning.md) sessions.
These sessions define the scope for all dataspace components, but therefore paint a clear picture of enhancements necessary for every single product.
The product teams themselfes are then responsible to define fine-grained task breakdowns as suiting their own needs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

themselves

Once planning activities for a certain iteration are completed, the implementation phase is starting and product teams can coordinate, where necessary
through our [communication channels](https://eclipse-tractusx.github.io/docs/oss/getting-started#communication-channels).

Integration tests are performed by maintaining an umbrella Chart, that deploys all relevant dataspace components to spin up an artificial dataspace based on Tractus-X components.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is "Product Umbrella Chart" now the best term based on conversation below?
it would be separated from " Tractus-X Umbrella Chart", right?

Integration tests are performed by maintaining an umbrella Chart, that deploys all relevant dataspace components to spin up an artificial dataspace based on Tractus-X components.
There is a dedicated repository [eclipse-tractusx/tractus-x-umbrella](https://github.com/eclipse-tractusx/tractus-x-umbrella), that is maintained collectively to reflect the latest product release versions.

Additional to the integration- and unit-test suites the teams maintain, every product also needs to adhere to the [Tractus-X release guidelines (TRGs)](https://eclipse-tractusx.github.io/docs/release).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proposal for line 21: Every product needs to adhere...
Proposal to insert between 24 & 25: this is in addition to...

> __HINT:__
> Take special care about legal requirements defined in TRG 7. They __must__ be adhered to on every PR.

Product releases are done by creating a GitHub release. Every release is following the [semantic versioning](https://semver.org/) pattern and marked in the git history via tag.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and must be marked...

@Siegfriedk
Copy link
Contributor

Please be aware that we created a new PR #662

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants