2021-05-05 13:58:14 +03:00
|
|
|
---
|
|
|
|
layout: developer-doc
|
|
|
|
title: Nightly Builds
|
|
|
|
category: distribution
|
|
|
|
tags: [distribution, release, nightly]
|
|
|
|
order: 10
|
|
|
|
---
|
|
|
|
|
|
|
|
# Nightly Builds
|
|
|
|
|
|
|
|
This document describes the infrastructure for Enso's automated nightly builds.
|
|
|
|
|
|
|
|
<!-- MarkdownTOC levels="2,3" autolink="true" -->
|
|
|
|
|
|
|
|
- [Triggering the Build](#triggering-the-build)
|
|
|
|
- [Nightly Build Versions](#nightly-build-versions)
|
|
|
|
- [Release Notes](#release-notes)
|
|
|
|
|
|
|
|
<!-- /MarkdownTOC -->
|
|
|
|
|
|
|
|
## Triggering the Build
|
|
|
|
|
|
|
|
The build can be triggered by two possible events:
|
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
- automatically, at 5am UTC after each working day (that is, on Tuesday to
|
2021-05-05 13:58:14 +03:00
|
|
|
Saturday),
|
2022-12-02 04:56:22 +03:00
|
|
|
- manually, dispatching the
|
|
|
|
[nightly.yml](https://github.com/enso-org/enso/actions/workflows/nightly.yml)
|
|
|
|
workflow.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
The nightly build is based off of the state of the `develop` branch at the
|
|
|
|
moment when it was triggered, unless a different branch has been specified when
|
|
|
|
triggering the build.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
|
|
|
Thanks to
|
|
|
|
[GitHub's concurrency settings](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency),
|
|
|
|
only one nightly or regular release job may be running at a given time. If a
|
|
|
|
build is triggered while another one is in progress, it will be pending until
|
|
|
|
the first one finishes.
|
|
|
|
|
|
|
|
## Nightly Build Versions
|
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
Build script automatically generates a new version for each nightly build, based
|
|
|
|
on the current date and previous tags.
|
|
|
|
|
|
|
|
The nightly release version is consists of the following parts:
|
2021-05-05 13:58:14 +03:00
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
- core version (`major.minor.patch`), which is the next stable version after the
|
|
|
|
last release,
|
|
|
|
- prerelease suffix (`-nightly.YYYY.MM.DD`), where `YYYY.MM.DD` is the date of
|
|
|
|
the build,
|
|
|
|
- optionally, index suffix (`.N`), where `N` is the index of the nightly build
|
|
|
|
on a given day.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
For example, if the last stable release was `2021.1.1`, the next nightly build
|
|
|
|
will be `2021.2.0-nightly.2021.05.10`.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
Nightly releases are periodically removed from the GitHub releases page, so they
|
|
|
|
should not be used for anything other than testing.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
2021-07-10 02:10:31 +03:00
|
|
|
As each release has a default edition associated with it, so do the nightlies.
|
2022-12-02 04:56:22 +03:00
|
|
|
We follow convention that the edition name is the same as the version. This
|
|
|
|
convention should not be relied upon, as it may change in the future.
|
2021-07-10 02:10:31 +03:00
|
|
|
|
2021-05-05 13:58:14 +03:00
|
|
|
## Release Notes
|
|
|
|
|
2022-12-02 04:56:22 +03:00
|
|
|
The release notes for nightly builds are generated automatically from the
|
|
|
|
template in `build/build/release-body.md`. The template is filled with a number
|
|
|
|
of placeholders, which are then replaced with the actual values. Please refer to
|
|
|
|
the file to learn more.
|
|
|
|
|
|
|
|
## Changelog
|
|
|
|
|
|
|
|
Each PR should update the first, `Enso Next`, section in `CHANGELOG.md`. These
|
2021-05-05 13:58:14 +03:00
|
|
|
changes will be later moved to the specific section for the full release. This
|
|
|
|
section is also used to fill the release notes for the nightly builds.
|
|
|
|
|
|
|
|
Most PRs should update the release notes, so there is a PR check that ensures
|
2022-12-02 04:56:22 +03:00
|
|
|
the file was modified. However, in some situations there is no need to update
|
|
|
|
the notes. In such case `CI: No changelog needed` label should be added to the
|
|
|
|
PR, so the check is skipped.
|
2021-05-05 13:58:14 +03:00
|
|
|
|
|
|
|
The changelog should keep consistent formatting:
|
|
|
|
|
|
|
|
- each version should be delimited by a top-level section (`#` in Markdown),
|
|
|
|
- the first section should always be called `Enso Next`,
|
|
|
|
- all subsequent sections should be called `Enso <version> (<date>)`.
|