Changes between Version 3 and Version 4 of IndependentLibraryVersioning


Ignore:
Timestamp:
Jun 7, 2007, 6:24:30 AM (15 years ago)
Author:
Gennadiy Rozental
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IndependentLibraryVersioning

    v3 v4  
    208208=== Supported version formats ===
    209209
    210 * <major>.<minor>.<patch>
     210 * <major>.<minor>.<patch>
    211211
    212212Refers to the specific version of library X.
    213213
    214 * <major>.<minor>
     214 * <major>.<minor>
    215215
    216216Refers to the latest patch release of library X in <major>.<minor> version
    217217
    218 * LATEST
     218 * LATEST
    219219
    220220Refers to the LATEST released version of library X
    221221
    222 * Boost:<version of boost>
     222 * Boost:<version of boost>
    223223
    224224Refers to the version of library X that was released as part of referred version of Boost
    225225
    226 * Boost:LATEST
     226 * Boost:LATEST
    227227
    228228Refers to the version of library X that was released as part of latest released version of Boost
    229229
    230 * TRUNK
     230 * TRUNK
    231231
    232232Points to the library X trunk. To be used to test against development version of another component. Is not recommended and would prevent releasing of your library.
     
    319319single script that does following tasks:
    320320
    321 1. Checks that all unit tests are green
    322 
    323 2. Checks that you don't depend on development version of other components (version TRUNK)
    324 
    325 3. Create release tag in libX/releases directory
    326 
    327 4. Save version of all dependant component. Even it you point on the LATEST, this will save actual version at the time of release. This is done by modifying libX.dependant_libs to refer to concrete version at the time of release
    328 
    329 5. Post announcements "Library A version N is released" on dev list.
     321 1. Checks that all unit tests are green
     322
     323 2. Checks that you don't depend on development version of other components (version TRUNK)
     324
     325 3. Create release tag in libX/releases directory
     326
     327 4. Save version of all dependant component. Even it you point on the LATEST, this will save actual version at the time of release. This is done by modifying libX.dependant_libs to refer to concrete version at the time of release
     328
     329 5. Post announcements "Library A version N is released" on dev list.
    330330
    331331No binaries are released at this time unless we invent another procedure for independent component packaging. Ideally this should be server side script to prevent manual "hack" releases.
     
    338338The script performs following tasks:
    339339
    340 1. For every library to be released it checks that all libraries it depends on are part of released libs set and if not adds it.
    341 
    342 2. Does [#auto_promotion automated promotion release] for all the released libraries that requires it.
    343 
    344 3. For every library to be released it finds last version that can be included in the release based on [#version_selection version selection algorithm]
    345 
    346 4. Deduces next version of boost (unless specified explicitly, which is what you should be doing for subset releases)
     340 1. For every library to be released it checks that all libraries it depends on are part of released libs set and if not adds it.
     341
     342 2. Does [#auto_promotion automated promotion release] for all the released libraries that requires it.
     343
     344 3. For every library to be released it finds last version that can be included in the release based on [#version_selection version selection algorithm]
     345
     346 4. Deduces next version of boost (unless specified explicitly, which is what you should be doing for subset releases)
    347347If, in comparison with last boost release, any library was released with <minor> version update this will be <minor> version update of the Boost. If all libraries released with <patch> version updates, it's going to be <patch> release of boost.
    348348
    349 5. Merge appropriate versions of all released libraries into single deployment tree:
     349 5. Merge appropriate versions of all released libraries into single deployment tree:
    350350
    351351{{{
     
    365365}}}
    366366
    367 6. Produce deployment package and post dev list notification.
     367 6. Produce deployment package and post dev list notification.
    368368
    369369=== Automatic promotion releases === #auto_promotion
     
    373373for each library X in S we can do a "auto-promotion release" in case if following conditions are satisfied:
    374374
    375 1. For the latest version of library X - Nx - there is dependant library Y, so that release Nx depends on version Ny1, but latest version of library Y is Ny2 > Ny1. This essentially means that one of the dependencies was released after X is released.
    376 
    377 2. Trunk version of library X depends on LATEST version of library X and all the tests for the trunk version of library X are green. This essentially means that library X still works with new version of library Y.
     375 1. For the latest version of library X - Nx - there is dependant library Y, so that release Nx depends on version Ny1, but latest version of library Y is Ny2 > Ny1. This essentially means that one of the dependencies was released after X is released.
     376
     377 2. Trunk version of library X depends on LATEST version of library X and all the tests for the trunk version of library X are green. This essentially means that library X still works with new version of library Y.
    378378
    379379In this case we can make an automatic "promotion" and release patch version update for library X without any changes that depends on latest version of library Y Ny2.
     
    391391This proposal doesn't require significant modification in testing procedures. Test driver script have to be changed to:
    392392
    393 * Accommodate different [#dev_tree testing environment] structure
    394 
    395 * Accommodate to the fact that test environment may include only subset of all the boost libraries
     393 * Accommodate different [#dev_tree testing environment] structure
     394
     395 * Accommodate to the fact that test environment may include only subset of all the boost libraries
    396396
    397397In addition the test results have to be accessible programmatically from the single location for scripts managing releases. The ideal solution would be to have some external DB based server that hosts interfaces for tests reporting and querying.
     
    401401In addition we may consider in long term implementing following extensions:
    402402
    403 * On-demand test requests.[[BR]]Exact scope of this feature is up to discussion
    404 
    405 * Proposed library testing.[[BR]]It might be helpful to allow some not-yet-accepted libraries to be tested in the same environment as regular libs. It shouldn't be difficult to support, since they are going to be no different in directory structure.
    406 
    407 * "Non-incremental testing" mode.[[BR]]For the test hosts running under limited disc space resources test system configuration have support option to clear all the results (including built binaries) after testing is completed. Exact scope of this feature is up for discussion.
    408 
    409 
    410 
     403 * On-demand test requests.[[BR]]Exact scope of this feature is up to discussion
     404
     405 * Proposed library testing.[[BR]]It might be helpful to allow some not-yet-accepted libraries to be tested in the same environment as regular libs. It shouldn't be difficult to support, since they are going to be no different in directory structure.
     406
     407 * "Non-incremental testing" mode.[[BR]]For the test hosts running under limited disc space resources test system configuration have support option to clear all the results (including built binaries) after testing is completed. Exact scope of this feature is up for discussion.
     408
     409
     410