WORKFLOW.asciidoc 8.39 KB
Newer Older
1 2
Turris OS release workflow
==========================
3

4 5
Binary branches
---------------
6

7 8
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
9 10 11
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.
12

13 14 15
Here Be Dragons (HBD)
~~~~~~~~~~~~~~~~~~~~~

Michal Hrusecky's avatar
Michal Hrusecky committed
16 17 18 19 20 21 22 23 24 25 26 27 28 29
--------------------------------------------------------------------------------
                \||/
                |  @___oo
      /\  /\   / (__,,,,|
     ) /^\) ^\/ _)
     )   /^\/   _)
     )   _ /  / _)
 /\  )/\/ ||  | )_)
<  >      |(,,) )__)
 ||      /    \)___)\
 | \____(      )___) )___
  \______(_______;;; __;;;
--------------------------------------------------------------------------------

30 31 32 33 34 35 36
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.

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

Michal Hrusecky's avatar
Michal Hrusecky committed
37 38 39 40 41 42 43 44
--------------------------------------------------------------------------------
("`-''-/").___..--''"`-._ 
 `6_ 6  )   `-.  (     ).`-.__.`) 
 (_Y_.)'  ._   )  `._ `. ``-..-' 
   _..`--'_..-_/  /--'_.'
  ((((.-''  ((((.'  (((.-' 
--------------------------------------------------------------------------------

45 46 47 48
Latest kinda working 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.

49 50
Here Be Turtles (HBT)
~~~~~~~~~~~~~~~~~~~~~
51

Michal Hrusecky's avatar
Michal Hrusecky committed
52 53 54 55 56 57 58 59 60
--------------------------------------------------------------------------------
                    __
         .,-;-;-,. /'_\
       _/_/_/_|_\_\) /
     '-<_><_><_><_>=/\
jgs    `/_/====/_/-'\_\
        ""     ""    ""
--------------------------------------------------------------------------------

61
Branch signed with deploy key, basically replacement for `rc`. Meant to contain
62
stuff we are planning to release. Should be ever more stable just a little
63
more bleeding edge that officially deployed images.
64

65
Here Be Snails (HBS)
66 67
~~~~~~~~~~~~~~~~~~~~

Michal Hrusecky's avatar
Michal Hrusecky committed
68
--------------------------------------------------------------------------------
69 70 71 72 73
    .----.   @   @
   / .-"-.`.  \v/
   | | '\ \ \_/ )
 ,-\ `-.' /.'  /
'---`----'----'
Michal Hrusecky's avatar
Michal Hrusecky committed
74 75
--------------------------------------------------------------------------------

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

78 79
Source to binary
----------------
80

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
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.

97 98 99 100 101
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`.
102 103 104

Maintenance
~~~~~~~~~~~
105

106 107 108 109 110 111
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.
112 113 114 115


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

116 117 118 119 120 121 122 123 124 125 126 127 128 129
  ------------------------
  | 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 |
130
            |                       | tos-packages: #efgh1  |                           | tos-packages: #efgh2 |              binaries: turtles (HBT)
131 132 133 134 135 136
            |                       | packages:     #ijkl1  |                           | packages:     #ijkl2 |
            |                       -------------------------                           ------------------------
            v                                  |                                                  |
            |                                  | add tag                                          |
            |  --------------------------      ^ replace branch with hash                         ^  add tag
            |  | build:        v4.0     |      |                                                  |  replace branch with hash
137
            |  | openwrt:      18.06    |      |                   --------------------------     |
138 139 140 141
            |--| tos-packages: master   |-->---O--------->------->-| tos-packages: for-v4.0 |-->--O---------->---------
            |  | packages:     for-v18  |      ^              |    --------------------------     ^                    |
            |  --------------------------      |              |                                   |                    |
            v             ^              binaries: 4.0.0      v                            binaries: 4.0.1             v
142 143
            |             |                        (HBS)      |                                      (HBS)             |
            |             |                                   |   --------------------------                           |   binaries: 4.1.0 (HBS)
144
            |       binaries: kittens (HBK)                   |   | build:        v4.1     |                           |          |
145
            |             |                                   |   | openwrt:      18.06    |                           |          v
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
            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
163 164

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