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
9 Some metrics about the number of branches merged per releases are
10 available on the [[dedicated statistics page|automated_stats]].
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
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
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.
35 * branches which are not merged into devel, stable and testing
36 * but had new commits since the previous release
41 Define the regularity we want to build topic branches, apart from being build
44 Note that we will have to plug that in automatic tests when they will be
47 Proposal 1: A build a day.
52 When to notify who? And how to notify them?
54 Proposal 1: Notify by email the author of the offending commit on failure.
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
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"
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.
111 This list other scenarios not part of the first deployement iteration, but we
112 might want to consider it in the future.
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.)
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
132 And I want the squashfs sort file to be generated, and the diff sent to me
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
145 When an ISO is build from my last commit
146 I want to access it through remote desktop (VNC/Spice/...) over Tor
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
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