Skip to content
Snippets Groups Projects
WORKFLOW.adoc 9.25 KiB
Newer Older
Turris OS release workflow
==========================
Binary branches
---------------
There are several binary branches that people can switch into. Those differ in
how well tested they are and from what sources they are build from. Generally
releases can be in versioned directories (by compile date) in respective branch
directory on repo and pointing to the correct version can be achieved using
symlinks.
Here Be Dragons (HBD)
~~~~~~~~~~~~~~~~~~~~~

Michal Hrusecky's avatar
Michal Hrusecky committed
--------------------------------------------------------------------------------
                \||/
                |  @___oo
      /\  /\   / (__,,,,|
     ) /^\) ^\/ _)
     )   /^\/   _)
     )   _ /  / _)
 /\  )/\/ ||  | )_)
<  >      |(,,) )__)
 ||      /    \)___)\
 | \____(      )___) )___
  \______(_______;;; __;;;
--------------------------------------------------------------------------------

Karel Koci's avatar
Karel Koci committed
Latest, greatest build. If it builds, ship it. Contains mix of our latest efforts
and latest upstream development. Can and will break regularly, not meant to be
used on daily basis, more just for testing. Can be understood as far future next
major release.

Here Be Lions (HBL)
~~~~~~~~~~~~~~~~~~~

--------------------------------------------------------------------------------
             ,%%%%%%%%,
           ,%%/\%%%%/\%%
          ,%%%\c "" J/%%%
 %.       %%%%/ o  o \%%%
 `%%.     %%%%    _  |%%%
  `%%     `%%%%(__Y__)%%'
  //       ;%%%%`\-/%%%'
 ((       /  `%%%%%%%'
  \\    .'          |
   \\  /       \  | |
    \\/         ) | |
 jgs \         /_ | |__
     (___________)))))))
--------------------------------------------------------------------------------

Latest development release. Contains latest builds from upstream stable branch
and our latest development changes. Should be mostly stable, rolling and is
meant for testing latest features. Not for BFU, but mostly usable. Can be also
understood as future minor release.

Here Be Kittens (HBK)
~~~~~~~~~~~~~~~~~~~~~

Michal Hrusecky's avatar
Michal Hrusecky committed
--------------------------------------------------------------------------------
("`-''-/").___..--''"`-._ 
 `6_ 6  )   `-.  (     ).`-.__.`) 
 (_Y_.)'  ._   )  `._ `. ``-..-' 
   _..`--'_..-_/  /--'_.'
  ((((.-''  ((((.'  (((.-' 
--------------------------------------------------------------------------------

Latest kinda working release. Contains latest builds from upstream stable branch
Karel Koci's avatar
Karel Koci committed
and our development changes. Should be mostly stable, rolling and is meant for
testing latest fixes. Not for BFU, but mostly usable. Can be also understood as
future fixup release.
Here Be Turtles (HBT)
~~~~~~~~~~~~~~~~~~~~~
Michal Hrusecky's avatar
Michal Hrusecky committed
--------------------------------------------------------------------------------
                    __
         .,-;-;-,. /'_\
       _/_/_/_|_\_\) /
     '-<_><_><_><_>=/\
jgs    `/_/====/_/-'\_\
        ""     ""    ""
--------------------------------------------------------------------------------

Branch signed with deploy key, basically replacement for `rc`. Meant to contain
stuff we are planning to release. Should be ever more stable just a little
more bleeding edge that officially deployed images.
Here Be Snails (HBS)
~~~~~~~~~~~~~~~~~~~~

Michal Hrusecky's avatar
Michal Hrusecky committed
--------------------------------------------------------------------------------
    .----.   @   @
   / .-"-.`.  \v/
   | | '\ \ \_/ )
 ,-\ `-.' /.'  /
'---`----'----'
Michal Hrusecky's avatar
Michal Hrusecky committed
--------------------------------------------------------------------------------

Branch for the real releases that are deployed to the end users automatically.

Source to binary
----------------
The most bleeding edge branch is `master`. It is build periodically from
upstream master branches of everything. If it builds it get's released. It's
main purpose is to have some kind of check how does our software works with
latest upstream and to get ready before next big release. This is published as
`HBD` binary branch.

When upstream releases new big release, we fork `master` branch of build repo
into `vX.0` where we start working on our next big release. Builds from this
are in `HBK` binary branch.

Over the time when stuff seems to calm down, we push binaries to `HBS` and when
we are ready to deploy it, we deploy from `HBS` and after that we create extra
commit which is no longer part of `vX.0` branch and has hard-coded hashes for
all repositories so we will be able to reproduce the build (in theory at
least). Tags are in form `vX.0.0` to always have a triplet there.

Next release will happen probably the same way from `vX.0`. In the mean time we
will fork `vX.1` from `vX.0` where we will be working on new changes.  Builds
from this branch will go to `HBK`, while when we need maintenance, we can still
create it from `vX.0` through `HBS`. Over the time we will merge local small
changes done in `vX.0` into `vX.1`.

Maintenance
~~~~~~~~~~~
As we will be tracking upstream stable releases, hopefully we will have bunch
of fixes automatically. When we need to be faster than upstream, we will create
local patch, release our release, send patch upstream and when included
upstream, we will drop our local patch. Generally, the main idea is to send as
much as possible upstream and keep minimum patches, mostly just our packages
and configuration.


--------------------------------------------------------------------------------

  ------------------------
  | build:        master |
  | openwrt:      master |
  | tos-packages: master |
  | packages:     master |
  ------------------------
            |
            |
            |
            |<---- binaries: dragons (HBD)
            |
            |                       -------------------------                           ------------------------
            v                       | build:        v.4.0.0 |                           | build:        v4.0.1 |
            |                       | openwrt:      #abcd1  |                           | openwrt:      #abcd2 |
            |                       | tos-packages: #efgh1  |                           | tos-packages: #efgh2 |              binaries: turtles (HBT)
            |                       | packages:     #ijkl1  |                           | packages:     #ijkl2 |
            |                       -------------------------                           ------------------------
            v                                  |                                                  |
            |                                  | add tag                                          |
            |  --------------------------      ^ replace branch with hash                         ^  add tag
            |  | build:        v4.0     |      |                                                  |  replace branch with hash
            |  | openwrt:      18.06    |      |                   --------------------------     |
            |--| tos-packages: master   |-->---O--------->------->-| tos-packages: for-v4.0 |-->--O---------->---------
            |  | packages:     for-v18  |      ^              |    --------------------------     ^                    |
            |  --------------------------      |              |                                   |                    |
            v             ^              binaries: 4.0.0      v                            binaries: 4.0.1             v
            |             |                        (HBS)      |                                      (HBS)             |
Karel Koci's avatar
Karel Koci committed
            |             |                                   |   --------------------------                           |   binaries: 4.1.0 (HBL)
            |       binaries: kittens (HBK)                   |   | build:        v4.1     |                           |          |
            |             |                                   |   | openwrt:      18.06    |                           |          v
            v             |                                    ---| tos-packages: master   |-->----------->------->--------->-----O----------->>>>
            |             |-------------------------------------> | packages:     for-v18  |                                      |
            |             |                                       --------------------------                                      v add tag & hashes
            |             |                                                                                                       |
            |             |                                                                                             ------------------------
            |             |                                                                                             | build:        v4.0.1 |
            v             v                                                                                             | openwrt:      #abcd3 |
            |  --------------------------                                                                               | tos-packages: #efgh3 |
            |  | build:        v5.0     |                                                                               | packages:     #ijkl3 |
            |--| openwrt:      20.3     |----->>>>                                                                      ------------------------
            |  | tos-packages: master   |
            |  | packages:     for-v20  |
            |  --------------------------
            v
            v
            v
            v

--------------------------------------------------------------------------------