gate-mechanics.txt revision 3853
41N/A
41N/A Userland Gate Mechanics
41N/A
41N/AThe userland consolidation operates a set of Mercurial repositories that work
41N/Atogether to manage the tools, source code, and build recipies. These
41N/Arepositories are the integration repository, gate, and external mirror. This is
41N/Asimiliar to how the Solaris ON, SFW, and other gates operates, however there
41N/Aare a few subtle differences. In ON and other consolidations, the integration
41N/Arepository is that gate and contains the canonical source. Once a changeset
41N/Ais committed, it becomes a part of the canonical source. In the case of ON,
41N/Athe changeset is immediately pushed to the clone repository. SFW and other
41N/Aconsolidations push changes from their canonical gate to a clone repository
41N/Anightly. In the userland consolidation, developers will commit changes to the
41N/Aintegration gate. These changes will not be accepted until some basic
41N/Avalidation is performed. Once the validation completes successfully, the
41N/Achanges are accepted and pushed into the canonical source gate.
41N/A
3853N/AIntegration repository (ssh://ulhg@userland.us.oracle.com//gates/incoming)
41N/A The integration gate is the Mercurial repository that all tools, source
41N/A code, and build recipies are committed to. Unlike ON, SFW, and other
41N/A Solaris gates this source code repository does not contains the canonical
41N/A source for the product. This repository is a staging area for change
41N/A integration and acceptance.
41N/A
41N/A hg push to integration gate
41N/A |
41N/A v
41N/A lock gate
41N/A |
41N/A v
41N/A validate changeset(s) -> failed --> rollback changeset(s)
41N/A | |
41N/A v |
41N/A accepted |
41N/A | |
41N/A v v
41N/A push to clone -------------------> unlock gate
41N/A |
41N/A v
41N/A update bug db
41N/A |
41N/A v
41N/A notify committer
41N/A
41N/A So, the basic flow works something like this: A user pushes a changeset
41N/A to the integration gate. Mercurial locks the gate to block any other
41N/A attempts to operate on the gate while it is validating the changeset.
41N/A At this point, validation is started in the background, a message is
41N/A displayed, and control is returned to the user. Validation continues
41N/A in the background. If validation completes successfully, the changeset(s)
41N/A are pushed to the clone, the gate is unlocked, the bug database is updated,
41N/A and the user is notified of the changeset acceptance. If the validation
41N/A fails, the changeset(s) are rolled back, the gate is unlocked, and the
41N/A user is notified of the failure.
41N/A
41N/A Changeset validation will include the following:
41N/A multi-delta update check
41N/A commit comment validation
41N/A bugdb validation
41N/A future operations
41N/A source archive download
41N/A incremental build on all architectures
41N/A unit test on all architectures
41N/A package publication for all architectures
41N/A
41N/A
3853N/ACanonical source repository (ssh://ulhg@userland.us.oracle.com//gates/gate)
41N/A The clone gate is actually the mercurial repository that contains the
41N/A canonical tools, source code, and build recipies for the product. It
41N/A should always be in a stable, buildable state. When changes are pushed
41N/A to this gate, they are mirrored on the external mirror repository from
41N/A here.
41N/A
41N/A clone update
41N/A |
41N/A v
41N/A push to external mirror
41N/A |
41N/A v
41N/A notify gatelings
41N/A
41N/A
3853N/AExternal mirror repository (https://hg.java.net/hg/solaris-userland~gate)
41N/A The external mirror is the mercurial repository that contains an externally
41N/A accessible copy of the canonical tools, source code, and build recipies for
41N/A the product. It should always be in a stable, buildable state.
41N/A
41N/A external mirror update
41N/A |
41N/A v
41N/A notify gatelings
41N/A
41N/A# vi:set fdm=marker expandtab ts=4: