Add more statistics in the automated builds blueprint.
[tails/matsa.git] / wiki / src / blueprint / automated_builds_and_tests / autobuild_specs.mdwn
blobf990ceebfdcc9d17c27469dcc911d704a51b5080
1 [[!meta title="Automated builds specification"]]
4 This blueprint helps to keep track of the discussion on the mailing
5 list, and is attached to [[!tails_ticket 8655]]
6 to specify how to implement [[!tails_ticket 6196]] ("Build all active
7 branches").
9 Some metrics about the number of branches merged per releases are
10 available on the [[dedicated statistics page|automated_stats]].
12 [[!toc levels=2]]
14 # Question to discuss
16 ## Which branches we want to build?
18 We already build the base branches (_stable_, _testing_, _devel_ and
19 _experimental_) + _feature/jessie_.
21 The questions raised is mostly concern the _feature/*_ and _bugfix/*_ branches
22 (so _topic branches_)
24 Given an ISO build takes around 45 minutes on lizard (worst case),
25 given two builders lizard will be able to build something like 64 ISOs a
26 day.
28 Developers should be able to trigger automatic builds for a branch whose build
29 was dropped (eg. last commit too old) by pushing a dumb commit on a
30 timestamp file in that branch.
33 Proposal1:
35 * branches which are not merged into devel, stable and testing
36 * but had new commits since the previous release
39 ## When to build it
41 Define the regularity we want to build topic branches, apart from being build
42 on Git push.
44 Note that we will have to plug that in automatic tests when they will be
45 deployed.
47 Proposal 1: A build a day.
50 ## Notifications
52 When to notify who? And how to notify them?
54 Proposal 1: Notify by email the author of the offending commit on failure.
57 # Scenarios
59 In the following scenario:
61 0. topic branches are named branch F
62 0. base branches are named branch B
63 0. builds are ran on merges which don't raise a conflict. If the merge raises a conflict, then the topic branch's developer should take care of resolving it.
66 ## Scenario 1 : reviewer
68     As a reviewer
69     When I'm asked to review branch F into branch B
70     Then I need to know if branch F builds fine
71       once merged into branch B (fresh results!)
72     And I should be notified of the results
73     And if the build succeeded
74       I might want to download the resulting ISO
75       I might want to get the pkg list
76       I want the Redmine ticket to be notified (optional)
77     Otherwise if it fails the developer who proposed the merge should be notified
78       And the developer *needs* to see the build logs
79       And the ticket should be reassigned to the branch submitter
80       And QA check should be set to "Dev needed"
83 ## Scenario 2 : developer
85     As a developer who has the commit bit
86     When I'm working on branch F
87     Then I need to know if my branch builds after I've pushed
88     And I need to know if my branch build is broken by something else
89        possibly weeks after my last commit (by e.g Debian changes,
90        changes in branch B, ...)
91     And if the build succeeded
92       I might want to download the resulting ISO
93       I might want to get the pkg list
94       I want the Redmine ticket to be notified (optional)
95     Otherwise if it fails I *need* to see the build logs
96       And the developer who proposed the merge should be notified
97       And the ticket should be reassigned to the branch submitter
98       And QA check should be set to "Dev needed"
101 ## Scenario 3 : RM
103     As the current RM
104     When working the full dev release cycle
105     Then I need to know when a branch FTBFS
106     And when this happens I need to see the build logs.
109 # Future ideas
111 This list other scenarios not part of the first deployement iteration, but we
112 might want to consider it in the future.
114 ## Scenario 10
116     As a Tails developer working on branch B
117     When I upload a package to APT suite B
118     Then I want to know if it broke the build ASAP
120 (same responsiveness as when pushing to git)
121 (acceptable workaround: being able to manually trigger a build.)
124 ## Scenario 11
126     As the current RM
127     When I push new tag T on branch B
128     Then I want the APT suite for tag T to be created
129     And I want the APT suite B to be copied into the APT suite T
130     And once this is done, I want a build from the checkout of tag T to be
131       triggered
132     And I want the squashfs sort file to be generated, and the diff sent to me
135 ## Scenario 12
137     As a Tails developer
138     When the test suite is ran on the ISO build from my last commit
139     I want to watch TV and see the test video in HTML5 from Tor Browser
142 ## Scenario 13
144     As a Tails developer
145     When an ISO is build from my last commit
146     I want to access it through remote desktop (VNC/Spice/...) over Tor
148 # Statistics
150 As of 2015-02-02, there are 26 branches that would be automatically
151 build as part of the next 1.3 release, following the for now defined
152 criterias (above in this blueprint):
154 * feature/7779-revisit-touchpad-settings
155 * feature/6992-whisperback-email-address
156 * bugfix/8714-tor-is-ready-robustness
157 * bugfix/8680-git-without-polipo
158 * feature/8719-mount-output-in-bug-reports
159 * feature/6241-gnupg2
160 * feature/8725-remove-vagrant-bootstrap-cache
161 * bugfix/8715-build-system-independent-APT-sources
162 * feature/7756-reintroduce-whisperback
163 * bugfix/8699-only-create-timestamps-in-Jenkins
164 * feature/8740-new-signing-key-phase-2
165 * feature/8665-remove-adblock
166 * bugfix/8756-repair-local-packages
167 * feature/7530-docker_anonym
168 * feature/7530-docker-with-apt-cacher-ng
169 * feature/7963-background-color
170 * feature/8491-live-additional-software-in-whisperback
171 * feature/7530-docker
172 * feature/linux-3.18
173 * feature/torbrowser-alpha
174 * bugfix/8747-update-tails-apt-repo-signing-key
175 * feature/8726-use-homogenous-Debian-mirrors-at-build-time
176 * feature/5525-sandbox-web-browser
177 * feature/7752-keyringer
178 * feature/6739-install-electrum
179 * bugfix/quote-wrappers-arguments