|
1 | 1 | # Release Procedure
|
2 | 2 |
|
| 3 | +The ["trunk-based" development strategy](https://trunkbaseddevelopment.com/) is used for releases of Arduino IDE. A branch named `<major>.<minor>.x` (where `<major>.<minor>` is the major and minor version numbers), is created for each minor version series. Release tags (both pre-release and production) are created from these branches. This allows a release to be created from a select subset of the commits in the `main` branch, [cherry-picked](https://git-scm.com/docs/git-cherry-pick) to the release branch. |
| 4 | + |
3 | 5 | ## Steps
|
4 | 6 |
|
5 | 7 | The following are the steps to follow to make a release of Arduino IDE:
|
@@ -39,18 +41,50 @@ If the version number of the previous release was `2.0.1`:
|
39 | 41 | - If this is considered a minor release (non-breaking changes to the "API"), the `version` values must be changed to `2.1.0`.
|
40 | 42 | - If this is considered a major release (breaking changes to the "API"), the `version` values must be changed to `3.0.0`.
|
41 | 43 |
|
| 44 | +### 4. 🍒 Prepare release branch |
| 45 | + |
| 46 | +#### Create |
| 47 | + |
| 48 | +A new release branch must be created on every minor version bump. For example, if you are making the `2.2.0` release, then it is necessary to create a branch named `2.2.x`. That branch will be used for all subsequent releases in the `2.2` minor version series (e.g., `2.2.1`, `2.2.22). |
| 49 | + |
| 50 | +#### Update |
| 51 | + |
| 52 | +Push all commits that are to be included in the release to the release branch. This can be a [cherry-picked](https://git-scm.com/docs/git-cherry-pick) subset of the commits from the `main` branch if not all the work from `main` is ready for release. |
| 53 | + |
| 54 | +### 5. ✅ Validate release |
| 55 | + |
| 56 | +#### Evaluate CI status |
| 57 | + |
| 58 | +The checks run by the continuous integration system might provide an indication of a problem that should block the release. Since the code in the release branch doesn't necessarily match to that of the `main` branch, it is essential to check the status of the release branch even when everything is passing in the `main` branch. |
| 59 | + |
| 60 | +1. Open the following URL in your browser:<br /> |
| 61 | + https://github.com/arduino/arduino-ide/actions |
| 62 | +1. Type `branch:<release branch>` (where `<release branch>` is the name of the release branch for this release) in the "**Filter workflow runs**" field of the "**Actions**" page. |
| 63 | +1. Press the <kbd>**Enter**</kbd> key. |
| 64 | +1. Wait for all in progress workflow runs to finish. |
| 65 | +1. Click on the first workflow name on the list at the left side of the page. |
| 66 | +1. Check the status of the latest run. If it was not successful, investigate the cause and determine if it is of significance to the release. |
| 67 | +1. Repeat the above steps for each of the listed workflows. |
| 68 | + |
| 69 | +#### Beta testing |
| 70 | + |
| 71 | +The "**Arduino IDE**" workflow run that was triggered by the branch creation will contain artifacts that can be used for beta testing. |
| 72 | + |
| 73 | +[More information about beta testing](../contributor-guide/beta-testing.md) |
| 74 | + |
42 | 75 | ### 4. 🚢 Create the release on GitHub
|
43 | 76 |
|
44 | 77 | Then, you need to **create and push the new tag** and wait for the release to appear on [the "**Releases**" page](https://github.com/arduino/arduino-ide/releases).
|
45 | 78 |
|
46 | 79 | ⚠ Doing this will create a new release and users who already have the IDE installed will be notified from the automatic updater that a new version is available. Do not push the tag if you don't want that.
|
47 | 80 |
|
48 |
| -```text |
49 |
| -git checkout main |
50 |
| -git pull |
51 |
| -git tag -a <YOUR_VERSION> -m "<YOUR_VERSION>" |
52 |
| -git push origin <YOUR_VERSION> |
53 |
| -``` |
| 81 | +1. Checkout the release branch in the repository. |
| 82 | +1. Run the following commands: |
| 83 | + ```text |
| 84 | + git pull |
| 85 | + git tag -a <YOUR_VERSION> -m "<YOUR_VERSION>" |
| 86 | + git push origin <YOUR_VERSION> |
| 87 | + ``` |
54 | 88 |
|
55 | 89 | Pushing a tag will trigger a **GitHub Actions** workflow on the `main` branch. Check the "**Arduino IDE**" workflow and see that everything goes right. If the workflow succeeds, a new release will be created automatically and you should see it on the ["**Releases**"](https://github.com/arduino/arduino-ide/releases) page.
|
56 | 90 |
|
|
0 commit comments