tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

release-promotion.rst (2021B)


      1 Release Promotion
      2 =================
      3 
      4 Release promotion allows us to ship the same compiled binaries that we've
      5 already tested.
      6 
      7 In the olden days, we used to re-compile our release builds with separate
      8 configs, which led to release-specific bugs which weren't caught by continuous
      9 integration tests. This meant we required new builds at release time, which
     10 increased the end-to-end time for a given release significantly. Release
     11 promotion removes these anti-patterns.
     12 
     13 By running our continuous integration tests against our shippable builds, we
     14 have a higher degree of confidence at release time. By separating the build
     15 phase tasks (compilation, packaging, and related tests) from the promotion
     16 phase tasks, we can schedule each phase at their own independent cadence, as
     17 needed, and the end-to-end time for promotion is reduced significantly.
     18 
     19 .. _release promotion phases:
     20 
     21 Release Promotion Phases
     22 ------------------------
     23 
     24 Currently, we have the ``build``, ``promote``, ``push``, and ``ship`` phases.
     25 
     26 The ``build`` phase creates ``shippable builds``. These optimize for correctness
     27 over speed, and are designed to be of shipping quality, should we decide to
     28 ship that revision of code. These are triggered on push on release branches.
     29 (We also schedule ``depend`` builds on most branches, which optimize for speed
     30 over correctness, so we can detect new code bustage sooner.)
     31 
     32 The ``promote`` phase localizes the shippable builds, creates any update MARs,
     33 and populates the candidates directories on S3. (On Android, we rebuild, because
     34 we haven't been successful repacking the APK.)
     35 
     36 The ``push`` phase pushes the candidates files to the appropriate release directory
     37 on S3.
     38 
     39 The ``ship`` phase ships or schedules updates to users. These are often at a
     40 limited rollout percentage or are dependent on multiple downstream signoffs to
     41 fully ship.
     42 
     43 In-depth relpro guide
     44 ---------------------
     45 
     46 .. toctree::
     47 
     48    release-promotion-action
     49    balrog
     50    partials
     51    signing
     52    partner-repacks
     53    partner-attribution