Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update documentation #12

Merged
merged 6 commits into from
Sep 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 36 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,58 @@
# Shared Travis Configuration Imports
# Auto-updated Node.js version matrix in Travis CI

- This repository is managed by the [Package Maintenance Working Group](https:/nodejs/package-maintenance), see [Governance](https:/nodejs/package-maintenance/blob/master/Governance.md).
- Read more about [Shared Build Configurations in Travis CI](https://docs.travis-ci.com/user/build-config-imports/).

## Usage

Replace the list of `node_js` versions in your `.travis.yml` with one of the available files.
Import configurations from this repository into your `.travis.yml` to automatically start testing in new versions of Node.js as they get released.

### Examples
## Usage

#### `lts` policy: use LTS and current Node.js releases, starting with v10.x
In your `.travis.yml`, replace the `node_js` section with the following:

```
import:
- nodejs/ci-config-travis:lts/gte-10.yml
# ^ ^
# | |
# | ·---------- Miminum version
# ·------------------ Upgrade policy
# i.e. include all LTS Node.js releases, starting with version 10.x
```

- Travis CI will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v10.0.0, will be added to the list as soon as they are released
- Once added, LTS versions will never be removed. Non-LTS versions will be removed when they reach their lifetime.
- Note that if your policy is to only support LTS versions, then removing the non-LTS version in your test matrix is not a breaking change, as the non-LTS version was never supported (it was only used for test purposes).
Depending on the support policy of your library/application, you can choose when and which versions get added to your test matrix.

Once added to the list, the Long Term Support (LTS) versions will never get removed from the list, i.e. you will need to take explicit action to change the minimum version you're importing (note: when you increase the minimum version requirements, you should also bump the major version of your package, to indicate breaking changes according to [semver](https://semver.org/)).

#### `all` policy: use all Node.js releases, starting with v14.x
This repository offers three upgrade policies:

```
import:
- nodejs/ci-config-travis:all/gte-14.yml
```
- **[`all`](./all)** - new major releases get added as they are released, they never get removed
- **[`lts`](./lts)** - new major releases get added as they are released, non-LTS releases get removed when their support lifetime ends, LTS versions never get removed
- **[`lts/strict`](./lts/strict)** - new major releases get added as they reach LTS status, they never get removed
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wondering if there is value in adding support for the other aliases?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I considered that, but they'd have identical contents with the ones here, given the "we won't remove versions" guarantee.


- Travis will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v14.0.0, will be added to the list as soon as they are released
- Once added, versions will never be removed from the list
### Upgrade timeline

For actual release dates, please check the Node.js [Release Working Group](https:/nodejs/Release/#release-schedule) repository.

#### Strict `lts` policy: use only LTS Node.js releases, starting with v10.x
This is an example of which versions would be available in each of the files on a certain date:

| | `all/gte-10.yml` | `lts/gte-10.yml` | `lts/strict/gte-10.yml` | Notes
|-----------------------|--------------------------------|-------------------------|-------------------------|-------
| Jul, 2020 | 10, 11, 12, 13, 14 | 10, 12, 14 | 10, 12 |
| Nov, 2020 | 10, 11, 12, 13, 14, 15 | 10, 12, 14, 15 | 10, 12, 14 | In Oct, 2020 v14 reaches LTS and v15 is released
| May, 2021 | 10, 11, 12, 13, 14, 15, 16 | 10, 12, 14, 15, 16 | 10, 12, 14 | In Apr, 2021 v10 reaches EOL and v16 is released
| Jul, 2021 | 10, 11, 12, 13, 14, 15, 16 | 10, 12, 14, 16 | 10, 12, 14 | On 1/Jun/2021, v15 reaches EOL and ⚠️ is removed from `lts` policy files (`lts/strict` never has this version included and `all` keeps it)
| Nov, 2021 | 10, 11, 12, 13, 14, 15, 16, 17 | 10, 12, 14, 16, 17 | 10, 12, 14, 16 | In Oct, 2021 V16 reaches LTS and v17 should be released


## Including the minimum supported version

The shared configurations only define a list of major versions, which means Travis CI will execute your tests in the _latest_ version of each major release line. If you intend your code to work in earlier versions of that release line, you _should_ explicitly include the earliest version you support in your test matrix, e.g. append the following in your `.travis.yml`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏼


```
import:
- nodejs/ci-config-travis:lts/strict/gte-10.yml
node_js:
- "10.0.0"
```

- Travis will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v14.0.0, will be added to the list as soon as they achieve LTS status (i.e. ~6 months after they are released)
- Once added, versions will never be removed from the list
This will ensure that you do not accidentally use features added in v10.1+, as they would be considered breaking changes for the consumers of your library.

Should you chose to only support the latest version of any major release line, there currently is no supported way to define that via the `engines` field in your `package.json`, however you could communicate this using [Document support levels](https:/nodejs/package-maintenance/blob/master/docs/PACKAGE-SUPPORT.md) (i.e. the `support` field or alternative locations).
44 changes: 44 additions & 0 deletions all/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Travis CI imports - Node.js upgrade policy: `all`

Import configurations from this folder into your `.travis.yml` to automatically start testing in new versions of Node.js as they get released.

Other upgrade policies:

- [`lts`](../lts) - new major releases get added as they are released, non-LTS releases get removed when their support lifetime ends, LTS versions never get removed
- [`lts/strict`](../lts/strict) - new major releases get added as they reach LTS status, they never get removed


## Usage example

In your `.travis.yml`, replace the `node_js` section with the following:

```
import:
- nodejs/ci-config-travis:all/gte-14.yml
```

- Travis will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v14.0.0, will be added to the list as soon as they are released
- Once added, versions will never be removed from the list

The shared configurations only define a list of major versions, which means Travis CI will execute your tests in the _latest_ version of each major release line. If you intend your code to work in earlier versions of that release line, you _should_ explicitly include the earliest version you support in your test matrix, e.g. append the following in your `.travis.yml`:

```
node_js:
- "10.0.0"
```


### Upgrade timeline

For actual release dates, please check the Node.js [Release Working Group](https:/nodejs/Release/#release-schedule) repository.

This is an example of which versions would be available in each of the files on a certain date:

| | `all/gte-10.yml` | Notes
|-----------------------|--------------------------------|-------
| Jul, 2020 | 10, 11, 12, 13, 14 |
| Nov, 2020 | 10, 11, 12, 13, 14, 15 | In Oct, 2020 v14 reaches LTS and v15 is released
| May, 2021 | 10, 11, 12, 13, 14, 15, 16 | In Apr, 2021 v10 reaches EOL and v16 is released
| Jul, 2021 | 10, 11, 12, 13, 14, 15, 16 | On 1/Jun/2021, v15 reaches EOL
| Nov, 2021 | 10, 11, 12, 13, 14, 15, 16, 17 | In Oct, 2021 V16 reaches LTS and v17 should be released
47 changes: 47 additions & 0 deletions lts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Travis CI imports - Node.js upgrade policy: `lts`

Import configurations from this folder into your `.travis.yml` to automatically start testing in new versions of Node.js as they get released. Long Term Support (LTS) versions will never get removed from these configurations. Non-LTS versions will get removed when they reach End-of-Life and are no longer support.

Please mind that when you remove the supported Node.js versions in _your library_, according to [semver](https://semver.org/), you should be publishing a new major release. This particular upgrade policy is designed for libraries that support _only LTS_ releases, even though non-LTS releases may appear in their test matrix, i.e. a removal of non-LTS release does not imply a semver breaking change if that non-LTS release was not officially support.

Other upgrade policies:

- [`all`](../all) - new major releases get added as they are released, they never get removed
- [`lts/strict`](../lts/strict) - new major releases get added as they reach LTS status, they never get removed


## Usage example

In your `.travis.yml`, replace the `node_js` section with the following:

```
import:
- nodejs/ci-config-travis:lts/gte-10.yml
```

- Travis CI will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v10.0.0, will be added to the list as soon as they are released
- Once added, LTS versions will never be removed. Non-LTS versions will be removed when they reach their lifetime.
- Note that if your policy is to only support LTS versions, then removing the non-LTS version in your test matrix is not a breaking change, as the non-LTS version was never supported (it was only used for test purposes).

The shared configurations only define a list of major versions, which means Travis CI will execute your tests in the _latest_ version of each major release line. If you intend your code to work in earlier versions of that release line, you _should_ explicitly include the earliest version you support in your test matrix, e.g. append the following in your `.travis.yml`:

```
node_js:
- "10.0.0"
```


### Upgrade timeline

For actual release dates, please check the Node.js [Release Working Group](https:/nodejs/Release/#release-schedule) repository.

This is an example of which versions would be available in each of the files on a certain date:

| | `lts/gte-10.yml` | Notes
|-----------------------|-------------------------|-------
| Jul, 2020 | 10, 12, 14 |
| Nov, 2020 | 10, 12, 14, 15 | In Oct, 2020 v14 reaches LTS and v15 is released
| May, 2021 | 10, 12, 14, 15, 16 | In Apr, 2021 v10 reaches EOL and v16 is released
| Jul, 2021 | 10, 12, 14, 16 | On 1/Jun/2021, v15 reaches EOL and ⚠️ is removed from `lts` policy files
| Nov, 2021 | 10, 12, 14, 16, 17 | In Oct, 2021 V16 reaches LTS and v17 should be released
44 changes: 44 additions & 0 deletions lts/strict/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Travis CI imports - Node.js upgrade policy: `lts/strict`

Import configurations from this folder into your `.travis.yml` to automatically start testing in new versions of Node.js as they reach Long Term Support (LTS) status.

Other upgrade policies:

- [`all`](../../all) - new major releases get added as they are released, they never get removed
- [`lts`](../../lts) - new major releases get added as they are released, non-LTS releases get removed when their support lifetime ends, LTS versions never get removed


## Usage example

In your `.travis.yml`, replace the `node_js` section with the following:

```
import:
- nodejs/ci-config-travis:lts/strict/gte-10.yml
```

- Travis will use the latest version of each release line in the list
- New major Node.js versions, greater or equal to v10.0.0, will be added to the list as soon as they achieve LTS status (i.e. ~6 months after they are first released)
- Once added, versions will never be removed from the list

The shared configurations only define a list of major versions, which means Travis CI will execute your tests in the _latest_ version of each major release line. If you intend your code to work in earlier versions of that release line, you _should_ explicitly include the earliest version you support in your test matrix, e.g. append the following in your `.travis.yml`:

```
node_js:
- "10.0.0"
```


### Upgrade timeline

For actual release dates, please check the Node.js [Release Working Group](https:/nodejs/Release/#release-schedule) repository.

This is an example of which versions would be available in each of the files on a certain date:

| | `lts/strict/gte-10.yml` | Notes
|-----------------------|-------------------------|-------
| Jul, 2020 | 10, 12 |
| Nov, 2020 | 10, 12, 14 | In Oct, 2020 v14 reaches LTS and v15 is released
| May, 2021 | 10, 12, 14 | In Apr, 2021 v10 reaches EOL and v16 is released
| Jul, 2021 | 10, 12, 14 | On 1/Jun/2021, v15 reaches EOL
| Nov, 2021 | 10, 12, 14, 16 | In Oct, 2021 V16 reaches LTS and v17 should be released