-
Notifications
You must be signed in to change notification settings - Fork 60
Recommendations for creating releases for various sub-projects #118
Comments
Issue description: An API Family is composed by more than one API. Each API, inside a Family, can be at different stage of development. How to manage different releases? Example: The EdgeCloud Family is composed by three APIs developed in the same Repo. Simple Edge Discovery, MEC exposure and experience management and Traffic Influence. Issue: if one API has reached a stable point (a release), how can it be underlined in the Repo? How to continue to develop that API without loosing track of the release? |
A possible solution could be based on branching and “Release” Tagging functionality natively available in GitHub (https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository). We suggest to create a release branch for each API inside an API Family. The people working on that API can make PRs on that branch to work on a release. The PR will be commented and, when agreed, the Family Owner will merge the PR in the Branch. When the development for that release is completed the Family Owner is notified and he creates a Release TAG on latest commit with the API project id name as a prefix (e.g. TI_v0.8.1). When ALL the APIs in a Family have reached a stable release and are Tagged with a Release, the Family Owner merges the branches into Main and creates a Release Tag for the merged API Family. Example (EdgeCloud):
For the compete Family, the Developer searches for “Release Tags” into Main. For the release of a specific API, the Developer searches for “Release Tags” into the related Branch. The three branches can be named like:
The Release Tags for the branches could be like:
For the Main Repo a prefix in the Tag is not requested. E.g. v1.0.0 is enough. |
includes needed images. Addresses #118
@shilpa-padgaonkar, the proposed diagram doesn't fit, in my understanding, the needs of an API Family where more that one API is included. The name of the Branches should be like API_1_name, API_2_name etc. Inside the Branch the "Release Tag" is used to identify v1.0.0, v2.0.0 etc. When the Branch API_1_name is tagged with a "Release Tag" it can be merged into the Main Branch. For example, for EdgeCloud we could have a branch named: Traffic_Influence. The first "Release Tag" would be v0.8.1. When an API Branch has a "Release Tag" it can be merged into Main. When ALL the API Branches are tagged and merged into Main we can make a "Release Tag" for Main an so for the Family |
|
In my understanding the "endpoints" you were referencing are the different APIs from the API Family (or bundle). So one endpoint is the TI API, another endpoint the MEC Discovery API. If this is correct, we are aligned. We create a branch for each endpoint. My comment on the on the "Release TAG" (https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository) is exactly what you said. it is a pointer to a commit. That commit is intended to release a stable version of an API, released to developers to be used. I see two possible approaches to track releases:
Which one do you prefer? |
@FabrizioMoggio: In the last commonalities call it was agreed in the group that commonalities will not influence the way how a subproject would like to use branches and tags for their own specific needs. Commonalities will only provide guidelines for creating subproject releases (and hence focus only on release branch and release tag names). The above mentioned branches and tags in your comment, I would not refer them as release branches or tags as release is at the repo level. So your subproject is free to choose any naming convention or tags you prefer for the branches & tags which are not repo release related. |
Conlusion: the "Camara subproject release guidelines" file defines how to manage the releases inside a subproject. The document also suggests to use the Release Tag feature from Github to mark the release. If a Subproject needs branches to work on different APIs (or for any other reason), this is up to the subproject to organize itself. Anyway the branches will be merged into the Main Repo where the Release Tag will be applied. @shilpa-padgaonkar: is this understanding of mine correct? |
@FabrizioMoggio: Yes, your understanding is correct. |
The "Camara subproject release guidelines" file defines how to manage the releases inside a subproject. |
@FabrizioMoggio : This issue would be closed when we are able to merge #123 |
No description provided.
The text was updated successfully, but these errors were encountered: