author | Milan Jurik <Milan.Jurik@oracle.com> |
Wed, 30 Nov 2011 06:39:13 -0800 | |
changeset 604 | c25824a87b1f |
parent 41 | 50cc241a2b9a |
child 3836 | 56af60eb6020 |
permissions | -rw-r--r-- |
41
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
1 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
2 |
Userland Gate Mechanics |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
3 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
4 |
The userland consolidation operates a set of Mercurial repositories that work |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
5 |
together to manage the tools, source code, and build recipies. These |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
6 |
repositories are the integration repository, gate, and external mirror. This is |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
7 |
similiar to how the Solaris ON, SFW, and other gates operates, however there |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
8 |
are a few subtle differences. In ON and other consolidations, the integration |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
9 |
repository is that gate and contains the canonical source. Once a changeset |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
10 |
is committed, it becomes a part of the canonical source. In the case of ON, |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
11 |
the changeset is immediately pushed to the clone repository. SFW and other |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
12 |
consolidations push changes from their canonical gate to a clone repository |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
13 |
nightly. In the userland consolidation, developers will commit changes to the |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
14 |
integration gate. These changes will not be accepted until some basic |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
15 |
validation is performed. Once the validation completes successfully, the |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
16 |
changes are accepted and pushed into the canonical source gate. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
17 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
18 |
Integration repository (ssh://ulhg@userland//nevada/incoming) |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
19 |
The integration gate is the Mercurial repository that all tools, source |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
20 |
code, and build recipies are committed to. Unlike ON, SFW, and other |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
21 |
Solaris gates this source code repository does not contains the canonical |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
22 |
source for the product. This repository is a staging area for change |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
23 |
integration and acceptance. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
24 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
25 |
hg push to integration gate |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
26 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
27 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
28 |
lock gate |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
29 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
30 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
31 |
validate changeset(s) -> failed --> rollback changeset(s) |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
32 |
| | |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
33 |
v | |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
34 |
accepted | |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
35 |
| | |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
36 |
v v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
37 |
push to clone -------------------> unlock gate |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
38 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
39 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
40 |
update bug db |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
41 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
42 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
43 |
notify committer |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
44 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
45 |
So, the basic flow works something like this: A user pushes a changeset |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
46 |
to the integration gate. Mercurial locks the gate to block any other |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
47 |
attempts to operate on the gate while it is validating the changeset. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
48 |
At this point, validation is started in the background, a message is |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
49 |
displayed, and control is returned to the user. Validation continues |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
50 |
in the background. If validation completes successfully, the changeset(s) |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
51 |
are pushed to the clone, the gate is unlocked, the bug database is updated, |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
52 |
and the user is notified of the changeset acceptance. If the validation |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
53 |
fails, the changeset(s) are rolled back, the gate is unlocked, and the |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
54 |
user is notified of the failure. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
55 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
56 |
Changeset validation will include the following: |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
57 |
multi-delta update check |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
58 |
commit comment validation |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
59 |
bugdb validation |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
60 |
future operations |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
61 |
source archive download |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
62 |
incremental build on all architectures |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
63 |
unit test on all architectures |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
64 |
package publication for all architectures |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
65 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
66 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
67 |
Canonical source repository (ssh://anon@userland//nevada/gate) |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
68 |
The clone gate is actually the mercurial repository that contains the |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
69 |
canonical tools, source code, and build recipies for the product. It |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
70 |
should always be in a stable, buildable state. When changes are pushed |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
71 |
to this gate, they are mirrored on the external mirror repository from |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
72 |
here. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
73 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
74 |
clone update |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
75 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
76 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
77 |
push to external mirror |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
78 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
79 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
80 |
notify gatelings |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
81 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
82 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
83 |
External mirror repository (ssh://[email protected]//hg/userland/gate) |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
84 |
The external mirror is the mercurial repository that contains an externally |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
85 |
accessible copy of the canonical tools, source code, and build recipies for |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
86 |
the product. It should always be in a stable, buildable state. |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
87 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
88 |
external mirror update |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
89 |
| |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
90 |
v |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
91 |
notify gatelings |
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
92 |
|
50cc241a2b9a
add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff
changeset
|
93 |
# vi:set fdm=marker expandtab ts=4: |