Skip to content

Commit 0e5bd9f

Browse files
authored
Document release process for editions (#325)
1 parent 72e2be1 commit 0e5bd9f

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,5 @@ Visit [Eiffel Community](https://eiffel-community.github.io) to get started and
8686
1. [Custom Data](./customization/custom-data.md)
8787
1. Extensions
8888
1. [Eiffel Operations Extension](https://github.com/Ericsson/eiffel-operations-extension)
89+
1. Releases and Milestones
90+
1. [Release process](./releases-and-milestones/release-process.md)

eiffel-syntax-and-usage/event-schemas.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Both schemas and documentation files are generated from _schema definition files
3535
| `_links.<link type>.targets.types` | A string array of event names that the link type may point to. Must be non-empty if `any_type` is false, and must be empty if `any_type` is true. |
3636
| `_history` | An array of objects describing the event type's version history, up to and including the current version. The items should be sorted in reverse order. |
3737
| `_history.version` | The event version described in this item. |
38-
| `_history.introduced_in` | A description of the edition in which this item's event version was introduced. |
38+
| `_history.introduced_in` | The first edition in which this version was the latest for this event type. If the version hasn't been released in a protocol edition or if there are newer versions in the first edition where it was introduced, use "No edition set". |
3939
| `_history.changes` | A short description of the changes in this item's event version. |
4040
| `_examples` | An array of objects describing examples of this event. |
4141
| `_examples.title` | The name of the example. |

eiffel-syntax-and-usage/versioning.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ That being said, to facilitate compatibility and consistency, the Eiffel protoco
3939
| Toulouse | [edition-toulouse](../../../tree/edition-toulouse) | Stepped major version of TERCC. Updated FLOW_CONTEXT link type, resulting in new minor version of all event types. |
4040
| Bordeaux | [edition-bordeaux](../../../tree/edition-bordeaux) | Initial edition. |
4141

42+
The [schema definition files](event-schemas.md) document the mappings between event versions and editions.
43+
4244
## Rules for patch, minor and major versions
4345
In the case of a communication protocol, applying Semantic Versioning is not as straight-forward as for a regular software implementation. The ground rule is to consider backwards compatibility from the perspective of the consumer of an event. Below are rules and examples of how this applies to the Eiffel protocol.
4446

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<!---
2+
Copyright 2022 Axis Communications AB.
3+
For a full list of individual contributors, please see the commit history.
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
--->
17+
18+
# Release process
19+
20+
This document describes the release process for Eiffel editions.
21+
22+
## Pre-release activities
23+
24+
Look up the name of the next edition in the [Versioning](../eiffel-syntax-and-usage/versioning.md) document.
25+
26+
GitHub [milestones](https://github.com/eiffel-community/eiffel/milestones?state=open) are used to track the proposed contents of an upcoming edition. Milestones are named "Edition \<name>", e.g. "Edition Arica". Issues, not pull requests, are added to the milestone.
27+
28+
## Making a release
29+
30+
When all issues in the scope of the edition have been closed and it's time to make the release, follow these steps:
31+
32+
1. Verify that all issues in the [milestone](https://github.com/eiffel-community/eiffel/milestones?state=open) are closed.
33+
1. Create a pull request with the following changes (see [PR 277](https://github.com/eiffel-community/eiffel/pull/277) for reference):
34+
1. Change all "No edition set" entries in the release tables of the latest YAML file for each event type to a link to the not yet existing edition tag.
35+
1. Claim the edition in [versioning.md](../eiffel-syntax-and-usage/versioning.md), including a short summary of the changes in the edition.
36+
1. When the pull request has been merged, create and push an "edition-\<name>" annotated tag (use `git tag -a`). The tag comment could include a short version of the included changes to the protocol. Any new major versions of event types should be called out.
37+
1. Create a GitHub release based on the newly pushed tag. The tag comment can probably be reused as the release description.
38+
1. Create issue(s) for updating other repositories to reference the new edition:
39+
1. [eiffel-sepia](https://github.com/eiffel-community/eiffel-sepia)
40+
1. Announce the new edition on the eiffel-community mailing list, LinkedIn, and Slack and ask maintainers of other repositories to make necessary updates.
41+
1. Mark the edition's milestone as closed.

0 commit comments

Comments
 (0)