Child pages
  • Create Sprint ID Cloud Branches
Skip to end of metadata
Go to start of metadata

At the end of every sprint, IG needs to be branched for easing Identity Cloud consumption of recent stable product artifacts.

Step-by-step guide

Determine the commits from where to branch.

  1. Leads agree on the commit from forgeops:stable that is a point where all PIT tests passed
    1. See https://stash.forgerock.org/projects/CLOUD/repos/forgeops/commits?until=refs%2Fheads%2Fstable
  2. Look at the content of /docker/7.0/ig/Dockerfile and grab the IG base docker image tag
    1. Example: https://stash.forgerock.org/projects/CLOUD/repos/forgeops/browse/docker/7.0/ig/Dockerfile?at=refs%2Fheads%2Fstable#1
  3. From that commit, it should be easy to spot the right lane in the Engineering dashboard
    1. Go to https://dashboard.engineering.forgerock.com/pipeline/IG
    2. It should be an all green line with forgeops promotion and all PIT tests passed
  4. Open any of the PyForge report, and grab both the IG Doc SHA and PyForge SHA

Now that we have the 3 commits (IG, Doc and PyForge), we can create branches:

  1. Create an IG branch based on the IG SHA: idcloud-<sprint-number>
    1. Update the maven version to avoid conflicts with master branch
  2. Do the same for IG Doc (branch from commit, change POM version number)

    GSA: We may need to also change the doc's {{pom.xml}} so that it refers to the IG project artifacts produced by the new branch

At this point, Jenkins should have done its magic and both IG and Doc artifacts should be available to PyForge.

Now, we need to update IG's pipeline in order to tell Jenkins to run a given version of PyForge (otherwise it will run master of PyForge):

  • Go to /jenkins-script/docker/pyforge/Dockerfile and update the FROM line, by changing stable to the PyForge SHA

    FROM gcr.io/engineering-devops/ci/pyforge-configured:stable
  • Go to /jenkins-script/libs/pyforge.groovy  and fix the Doc version (2 places) to the version of the Doc branch

    IGDOC_VERSION          : commonModule.getProjectVersion(),

It's possible that some tests need to be disabled on a case by case basis, do that in pyforge.groovy  as well.

We're now ready to build the IG branch.

1 Comment

  1. Now, we need to update IG's pipeline in order to tell Jenkins to run a given version of PyForge (otherwise it will runmaster of PyForge):

    • Go to/jenkins-script/docker/pyforge/Dockerfileand update the FROM line, by changing stable to the PyForge SHA


    Once my PR is merged on IG this is not needed but instead need to create a `idcloud-xxxx-stable-for-ig` on PyForge on the corresponding commit