# Release process

**URL:** https://discuss.tryton.org/t/release-process/395
**Category:** Organisation
**Created:** [August 4, 2017, 7:51am UTC](https://discuss.tryton.org/t/release-process/395 "2017-08-04T07:51:22Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![pokoli](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/pokoli/32/22_2.png) [@pokoli](https://discuss.tryton.org/u/pokoli)
#### Post date: [August 4, 2017, 7:51am UTC](https://discuss.tryton.org/t/release-process/395/1 "2017-08-04T07:51:22Z")

</div>

# Introduction

The Tryton Release process is inspired by the [OpenBSD](http://www.openbsd.org/) Release Process. To get a conception of the process please have a look at a video of [The OpenBSD Release Process at AsiaBSDCon 2009](http://www.youtube.com/watch?v=i7pkyDUX5uM). The next release date is chosen after a release and published at [Tryton’s events calendar](http://www.tryton.org/events.html).

# What is released?

- Every part of Tryton, the user needs to install and run the complete application.
- Development and build-for-release specific parts are not released, they are always current in the development tree.

# Schedule

Releases are published every 6 months. So a long term release is published every 2.5 years.  
Maintenance releases are not planned and are published when there are fixes.

# Maintenance

Minor Releases are maintained for at least 1 year.  
Long Term Release are maintained for at least 5 years.  
Maintenance means there will be bug-fix releases during the period.

Here is an example of the timeline:

```
* 6.0 5/2021 --> 5/2026 |---.---.---.---.---|
* ...
* 7.0 10/2023 --> 10/2028 |---.---.---.---.---|
* 7.2 5/2024 --> 5/2025 |---|
* 7.4 10/2024 --> 10/2025 |---|
* 7.6 5/2025 --> 5/2026 |---|
* 7.8 10/2025 --> 10/2026 |---|
* 8.0 5/2027 --> 5/2032 |---.---.---.---.---|             

```

# Version number of Tryton releases

The Tryton version number is made of thee parts like the following example:

```
Tryton Version 2.3.5

```

## Major release

The first and second number are series numbers.  
These general version numbers…

- … are used to indicate a major step in the evolution of Tryton;
- … are published twice per year;
- … can change parts of the database structure;
- … could need manual steps for database upgrade;

Long Term Release are release with series ending by `0`.

## Minor release

The third number is the minor version number of Tryton.  
Releases changing this number…

- … are published to fix bugs;
- … don’t change the database structure;
- … don’t need a database upgrade;
- … are considered as unproblematic for update;

## Migration

The migration between series is managed by updating the database. Some release may require manual operation which are published under [migration category](https://discuss.tryton.org/c/migration).  
The process is supported from one series to the direct following and from one LTS to the direct next one (by applying operations of each series in between).

## Development state

The second number indicates development state:

- even number and null: Release version
- odd number: Development version

# Major release preparation

The development is frozen about 2 weeks before the scheduled date.  
“freezing” is handled by maintainers discipline.

During freezing:

- Translation teams update the translation of each repositories.
- Everybody test and report issues until release.
- The reviews related to new features are not reviewed and not applied.

# Release process

We use the scripts from [Tryton / Tools / Maintenance · GitLab](https://code.tryton.org/tools/maintenance) from within the repository to release.

It just requires to have the environment variable `TRYTON_SIGNIFY_KEYS` pointing to the folder containing the [`signify`](https://man.openbsd.org/signify) keys and `TRYTON_NPM_OTP` containing the command that returns the OTP token for npm.

## Major release

Generate a new [`signify`](https://man.openbsd.org/signify) key and push it.

Execute the following command:

```
$ do_major_release

```

Add new series to [tryton-docker](https://foss.heptapod.net/tryton/tryton-docker) .

Build a demo database for the new series with the module `authentication_none` using:

```
$ createdb demox.y
$ TRYTOND_DATABASE_URI=postgresql:// trytond-admin -d demox.y -u authentication_none
$ TRYTOND_DATABASE_URI=postgresql:// python -m demo -d demox.y

```

Upload the database backup to the demo server.  
Update web server to redirect to the new series. Update module list and download links.  
Update `.upptimerc.yml` for the new demo service.

Build clients for Windows, MacOS and Flatpack.

Setup scheduled pipeline for the new branch.

Activate `r2e` for announce for new modules.

## Minor release

Execute the following command:

```
$ do_minor_release

```

Optionally build clients for Windows, MacOS and FlatPack.

---

_[View the full topic](https://discuss.tryton.org/t/release-process/395)._
