[Starlingx-discuss] [Release] [Build] Preparation and discussion about StarlingX release 2.0

Scott Little scott.little at windriver.com
Thu Aug 1 20:10:05 UTC 2019


StarlingX is preparing for its 2.0 release.  Expected next week.

Below is a discussion of how this is to be done, and a few the the 
decisions that need to be taken.

The release team has taken a first pass at answering the outstanding 
questions. Our preferred options are indicated.


General Requirements
- Create a release candidate branch from master, preferably originating 
from the context of a green sanity.
   - Branch creation might require a brief halt of commit activity on 
the master branch.  Stay tuned.
   - more on branching below
- RC branch recieves cherry-picked patches from master until a final 
compile is declared.
- Set SW_VERSION, aka PLATFORM_RELEASE, for RC branch to 19.08 (Format 
YY.MM)
   - Retain same SW_VERSION for dot releases
- Set SW_VERSION, aka PLATFORM_RELEASE, for master branch to 19.09
- Any helm chart changes to pick up release images, not the master images?
   - answer appears to be no.  Helm charts will list the images we build
- Create a CENGN job to build the RC branch.  Daily builds until final 
compile is declared.
   - scripts are fairly generic.  In theory it's just need for a new 
master job to set customize parameters.
   - A little bit of work to set docker images tags correctly vs 
branching startagy... more below
     - Current default format would default to 
"r-${BRANCH}-centos-stable-${PUBLISH_TIMESTAMP}", but this can be 
changed.  See below
   - A release branch will test some new code paths in cengn scripts.  
Will have to monitor closely.
- Make sure the build/image retirement scripts are doing the right thing.
   - Already coded to support branching opt 2 (below)
   - Support for opt 1 will require some new scripting in CENGN

Branching startagy and content lock down
   - Desired properties of the branch strategy.
      - We can re-build the ISO release at a later date.
        - The exact context of StarlingX git trees is captured in some form.
        - Context of third party git repos is captured on a best effort 
basis.  e.g. capture tag or sha (an assume they are stable), but not 
cloning gits.
        - Leverage the 'revision' field for all repos in the manifest.
      - We can rebuild our docker images at a later date... I don't 
think we fully know how to do this yet.
        - lock down the base centos image, and yum, if possible
          - Need tooling changes for this
          - Need to reference centos docker image by sha, not tag.
          - Probably need to hack the yum configuration as well, point 
it to cengn.
            - The build of stx-centos points to cengn repo for yum 
update. The loci build of images, however, also uses upstream sources. 
Otherwise, we would need to include all RPMs used for those images in 
the LST files
        - lock down our inputs from PYPI as best we can
          - Find all files named *stable_docker_image, field 
'PIP_PACKAGES=' needs to use syntax like ... e.g. panko==5.0.0
          - inputs can be found in piplst files   e.g. 
$MY_WORKSPACE/std/build-images/tis-networking-avs-heat-centos-stable.piplst
          - All python modules (non-starlingx) installed would need to 
be in the base wheels.cfg, which also updates the upper-constraints.txt 
in the tarball to restrict the installed version.
        - Lock down rpms feeding into docker images if possible.
          - Find all files named *stable_docker_image, field 
'DIST_PACKAGES=' needs to use syntax like ... e.g. 
bash-4.2.46-31.el7.tis.4.x86_64
          - inputs can be found in rpmlis files   e.g. 
$MY_WORKSPACE/std/build-images/tis-networking-avs-heat-centos-stable.rpmlst
          - ALL 'tis' packages found in rpmlst must be listed in 
DIST_PACKAGES

   - We don't have the power to branch and tag all repos.
     - Some of the work needs to be done by further locking down the 
manifest on specific tags/shas
     - Do we store the locked down manifest as tagged copy of 
default.xml, or use versioned file names xml?

   - What is the basic format of our branchs and tags
     - YYYY.MM   i.e. date like   as use by to 2018.10 release
     - 2.0       i.e. a release version
     - Current CENGN scripting uses the date format, release format 
requires scripting changes, but nothing major.
     - I'm always eager that a release branch be clearly distinguished 
from a dev/feature branch.  Currently CENGN looks for YYYY.MM.  Is it 
safe enough to look for anything starting with a number?
     - Release Team recommends the release version format be as follows
       - branch:  r/stx.2.0
       - tag:     v2.0.0

   - Opt 1 - Single RC branch.  Tags mark dot releases -- preferred by 
Release Team
     - A single branch is used to stage commits for both initial release 
and all subsequent dot releases
     - Branch name is r/stx.2.0 ... applies to starlingx repos.
     - Tags for each dot release.
       - v2.0.## ... for starlingx repos
       - v.stx.2.0.## ... for starlingx-staging repos.  Note: 
starlingx-staging may have inherited version tags from an upstream 
project that we must not collide with
     - Git lock down via creation of a uniquely named manifest 
(v2.0.##.xml) rather than default.xml.  In this manifest we specify tags 
or shas for each git.
     - We may need to halt commits to the staging branch, or at least 
the manifest git, when a dot release is imminent and we are waiting on 
test results.
     - New scripting required on CENGN for load and docker image retirement

   - Opt 2 - Single RC branch. Fork a branch to lock down a dot releases
     - A single branch is used to stage commits for both initial release 
and all subsequent dot releases
     - Branch name of staging branch is rc/stx.2.0 ... applies to 
starlingx repos.
     - When a dot release is declared, fork a release branch from the 
staging branch (r/stx.2.0.##).  Only commits permitted are to lock down 
the manifest.
     - Can still tag as in opt 1, but not required.

   - Opt 3 - new RC branch for each dot release (waterfall)
     - Branch name is r/stx.2.0.0 ... applies to starlingx
     - Final commit is to lock down the git manifest (default.xml)
     - Next dot release forks from the prior dot release, using the 
commit prior to manifest lock down.
     - Can still tag as in opt 1, but not required.



Docker image labeling:
   - A new set of docker images for each dot release
   - Probably don't need to distinguish release from release candidate 
as this is hidden within the helm charts.
   - Probably don't need to distinguish dot releases.  Again it is 
hidden by the helm charts.
   - Docker image tagging options ...

     r-2.0-centos-stable.0
     2.0-centos-stable.0
     r-2.0-centos-stable-${PUBLISH_TIMESTAMP}.0
     2.0-centos-stable-${PUBLISH_TIMESTAMP}.0    <--- preferred by 
Release Team ?
     r-2.0.##-centos-stable.0
     2.0.##-centos-stable.0
     r-2.0.##-centos-stable-${PUBLISH_TIMESTAMP}.0
     2.0.##-centos-stable-${PUBLISH_TIMESTAMP}.0


Cengn publication path:
   - Release path
     .../starlingx/release/2.0.##
     .../starlingx/release/2.0/2.0.##     <-- Preferred by Scott

   - RC path
     .../starlingx/rc/2.0/timestamp       <-- Preferred by Scott for opt 1
     .../starlingx/rc/2.0.##/timestamp
     .../starlingx/rc/2.0/2.0.##/timestamp




More information about the Starlingx-discuss mailing list