This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
releng:artifact_versioning [2015/11/04 10:29] Fatih Degirmenci created artifact versioning proposal |
releng:artifact_versioning [2016/01/20 12:37] (current) Fatih Degirmenci [OPNFV Versioning Scheme] |
||
---|---|---|---|
Line 5: | Line 5: | ||
The artifacts that are produced are including but not limited to | The artifacts that are produced are including but not limited to | ||
* ISO: Produced by Installer Projects to be used for installing OPNFV. | * ISO: Produced by Installer Projects to be used for installing OPNFV. | ||
+ | * RPMs and other packages: Produced by Feature Projects. | ||
* Docker Images: Produced by Test Projects to ease the testing. | * Docker Images: Produced by Test Projects to ease the testing. | ||
+ | * Documents: Produced by all projects. | ||
- | OPNFV versioned artifacts that are included in Arno release. But in order to track and record produced and used versions, it is needed to apply versions to artifacts produced during development. | + | Only the released OPNFV artifacts were versioned for the Arno release. In order to track and record produced and used versions of artifacts, it is needed to apply versions to artifacts produced during development as well. |
====== OPNFV Versioning Scheme ====== | ====== OPNFV Versioning Scheme ====== | ||
- | OPNFV uses versioning scheme similar to [[http://semver.org/ | Semantic Versioning]] to version released artifacts as shown below. | + | OPNFV uses[[http://semver.org/ | Semantic Versioning]] to version released artifacts as shown below. |
- | <release_name>.<release_year>.<minor>.<patch> | + | |
+ | <release_name>.<minor>.<patch> | ||
- | In OPNFV context, <release_name>.<release_year> corresponds to major version in Semantic Versioning and name and year are stepped together, essentially becoming | + | This essentially becomes |
- | <major>.<minor>.<patch> = <release_name.release_year>.<minor>.<patch> | + | <major>.<minor>.<patch> = <release_name>.<minor>.<patch> |
+ | |||
+ | For example for Brahmaputra release, the released artifacts will be versioned like below | ||
- | For example for Arno release the artifacts are versioned like below | + | R1: brahmaputra.1.0 |
- | R1: arno.2015.1.0 | + | SR1: brahmaputra.2.0 |
- | SR1: arno.2015.2.0 | + | |
- | ====== Artifact Versioning Proposal ====== | + | ====== Details of Artifact Versioning ====== |
- | + | ||
- | OPNFV projects produce artifacts every night and these artifacts are stored on [[http://artifacts.opnfv.org/ | OPNFV Artifact Repository]] and [[https://hub.docker.com/r/opnfv/ | Docker Hub]]. | + | |
The proposal to step version numbers as below: | The proposal to step version numbers as below: | ||
- Patch version: Stepped for each and every build | - Patch version: Stepped for each and every build | ||
- | - Minor version: Stepped when the current OPNFV release is done | + | - Minor version: Stepped when the current OPNFV release is done and on stable/X branch |
- | - Major version: Stepped when the current OPNFV release is branched off | + | - Major version: Stepped when the current OPNFV release is branched off and development work for upcoming release is started on master branch |
- | Based on above proposal, an example scenario for Brahmaputra can be seen on below diagram. | + | An example scenario for Brahmaputra and C-River releases can be seen on below diagram. |
- | {{:releng:opnfv_versioning.png?1600|}} | + | {{:releng:opnfv_versioning.png|}} |
- | * Brahmaputra development: patch version is stepped for each and every artifact produced | + | * **Brahmaputra development:** patch version is stepped for each and every artifact produced |
- | * brahmaputra.2016.0.1 <- first artifact that is built from the master branch | + | * brahmaputra.0.1 <- first artifact that is built from the master branch |
- | * brahmaputra.2016.0.2 | + | * brahmaputra.0.2 |
- | * brahmaputra.2016.0.3 | + | * brahmaputra.0.3 |
* ... | * ... | ||
- | * brahmaputra.2016.0.X <- release candidate is built from the stable/brahmaputra branch | + | * brahmaputra.0.X <- release candidate is built from the stable/brahmaputra branch |
- | * Brahmaputra release: patch version is reset to 0 and minor version is stepped. | + | * **Brahmaputra release:** patch version is reset to 0 and minor version is stepped. |
- | * brahmaputra.2016.1.0 <- released version from the stable/brahmaputra branch | + | * brahmaputra.1.0 <- released version from the stable/brahmaputra branch |
- | * Brahpamutra bugfixes: patch version is stepped for each and every artifact produced | + | * **Brahpamutra bugfixes:** patch version is stepped for each and every artifact produced |
- | * brahmaputra.2016.1.1 <- first artifact that is built from the stable branch | + | * brahmaputra.1.1 <- first artifact on the stable/brahmaputra branch |
- | * brahmaputra.2016.1.2 | + | * brahmaputra.1.2 |
- | * brahmaputra.2016.1.3 | + | * brahmaputra.1.3 |
* ... | * ... | ||
- | * brahmaputra.2016.1.Y <- release candidate | + | * brahmaputra.1.Y <- release candidate |
- | * Brahmaputra stable release: Patch version is reset to 0 and minor version is stepped. | + | * **Brahmaputra stable release:** patch version is reset to 0 and minor version is stepped. |
- | * brahmaputra.2016.2.0 <- released version | + | * brahmaputra.2.0 <- released version |
- | * C-River development: major, minor and patch versions are reset accordingly once the stable/brahmaputra is branched off | + | * **C-River development:** major, minor and patch versions are reset accordingly once the stable/brahmaputra is branched off |
- | * criver.2016.0.1 <- first artifact that is built from the master branch for the criver release | + | * criver.0.1 <- first artifact on the master branch for the criver release |
Please note that functionality/NBC changes have not been taken into account for the above scenario. | Please note that functionality/NBC changes have not been taken into account for the above scenario. | ||
+ | ====== Calculating Versions Automatically ====== | ||
+ | |||
+ | Releng will provide a script which will calculate the next version to use by checking the latest version that exists on OPNFV Artifact Repository and/or Docker Hub and stepping it by one. | ||
+ | |||
+ | ====== Applying Tags to Git Repo ====== | ||
+ | |||
+ | In order to increase the traceability and make cross referencing between artifacts and source code easier, it is possible to apply tags to git repo on SHA1 that is used for building certain version of the artifact. | ||