|
1 | 1 | # Release Procedure
|
2 | 2 |
|
3 |
| -You will not need to create a new release yourself as the Arduino team takes care of this on a regular basis, but we are documenting the process here. Let's assume the current version is `0.1.3` and you want to release `0.2.0`. |
| 3 | +## 🗺️ Merge localization sync PR |
4 | 4 |
|
5 |
| - - Make sure the `main` state represents what you want to release and you're on `main`. |
6 |
| - - Prepare a release-candidate build on a branch: |
7 |
| -```bash |
8 |
| -git branch 0.2.0-rc \ |
9 |
| -&& git checkout 0.2.0-rc |
10 |
| -``` |
11 |
| - - Bump up the version number. It must be a valid [semver](https://semver.org/) and must be greater than the current one: |
12 |
| -```bash |
13 |
| -yarn update:version 0.2.0 |
14 |
| -``` |
15 |
| - - This should generate multiple outgoing changes with the version update. |
16 |
| - - Commit your changes and push to the remote: |
17 |
| -```bash |
18 |
| -git add . \ |
19 |
| -&& git commit -s -m "Updated versions to 0.2.0" \ |
20 |
| -&& git push |
| 5 | +A pull request titled "**Update translation files**" is submitted periodically by the "**github-actions**" bot to pull in the localization data from [**Transifex**](https://www.transifex.com/arduino-1/ide2/dashboard/). |
| 6 | + |
| 7 | +If there is an open PR, this must be merged before making the release. |
| 8 | + |
| 9 | +It will be shown in these search results: |
| 10 | + |
| 11 | +https://github.com/arduino/arduino-ide/pulls/app%2Fgithub-actions |
| 12 | + |
| 13 | +## ⚙ Create the release on GitHub |
| 14 | + |
| 15 | +First of all, you need to **set the new version in all the `package.json` files** across the app (`./package.json`, `./arduino-ide-extension/package.json`, `./browser-app/package.json`, `./electron-app/package.json`), create a PR, and merge it on the `main` branch. |
| 16 | + |
| 17 | +To do so, you can make use of the `update:version` script. |
| 18 | + |
| 19 | +For example, if you want to release the version `<YOUR_VERSION>`, you should run the following commands: |
| 20 | + |
| 21 | +```text |
| 22 | +git checkout main |
| 23 | +git pull |
| 24 | +git checkout -b version-<YOUR_VERSION> |
| 25 | +yarn update:version <YOUR_VERSION> |
| 26 | +git commit -am <YOUR_VERSION> |
| 27 | +git push origin version-<YOUR_VERSION> |
21 | 28 | ```
|
22 |
| - - Create the GH PR the workflow starts automatically. |
23 |
| - - Once you're happy with the RC, merge the changes to the `main`. |
24 |
| - - Create a tag and push it: |
25 |
| -```bash |
26 |
| -git tag -a 0.2.0 -m "0.2.0" \ |
27 |
| -&& git push origin 0.2.0 |
| 29 | + |
| 30 | +replacing `<YOUR_VERSION>` with the version you want to release. Then create a PR and merge it. |
| 31 | + |
| 32 | +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). |
| 33 | + |
| 34 | +⚠ 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. |
| 35 | + |
| 36 | +```text |
| 37 | +git checkout main |
| 38 | +git pull |
| 39 | +git tag -a <YOUR_VERSION> -m "<YOUR_VERSION>" |
| 40 | +git push origin <YOUR_VERSION> |
28 | 41 | ```
|
29 |
| - - The release build starts automatically and uploads the artifacts with the changelog to the [release page](https://github.com/arduino/arduino-ide/releases). |
30 |
| - - If you do not want to release the `EXE` and `MSI` installers, wipe them manually. |
31 |
| - - If you do not like the generated changelog, modify it and update the GH release. |
| 42 | + |
| 43 | +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. |
| 44 | + |
| 45 | +## 📄 Create the changelog |
| 46 | + |
| 47 | +**Create GitHub issues for the known issues** that we haven't solved in the current release: |
| 48 | + |
| 49 | +https://github.com/arduino/arduino-ide/issues |
| 50 | + |
| 51 | +From the ["**Releases**"](https://github.com/arduino/arduino-ide/releases) page, edit the release notes following the **Keep A Changelog** scheme: |
| 52 | + |
| 53 | +https://keepachangelog.com/en/1.0.0/#how |
| 54 | + |
| 55 | +Add a list of mentions of GitHub users who contributed to the release in any of the following ways (ask @per1234): |
| 56 | + |
| 57 | +- Submitted a PR that was merged |
| 58 | +- Made a valuable review of a PR |
| 59 | +- Submitted an issue that was resolved |
| 60 | +- Provided valuable assistance with the investigation of an issue that was resolved |
| 61 | + |
| 62 | +Add a "**Known Issues**" section at the bottom of the changelog. |
| 63 | + |
| 64 | +## ✎ Update the "**Software**" Page |
| 65 | + |
| 66 | +Open a PR on the [bcmi-labs/wiki-content](https://github.com/bcmi-labs/wiki-content) repository to update the links and texts. |
| 67 | + |
| 68 | +ℹ️ If you don't have access to the repo, ask in the `#team_wedo` **Slack** channel. |
| 69 | + |
| 70 | +**❗ Make sure all the links to the new IDE build are working.**<br /> |
| 71 | +If they aren't, there has probably been some issue with [the "**Arduino IDE**" workflow run](https://github.com/arduino/arduino-ide/actions/workflows/build.yml) triggered when pushing the tag during the "**Create the release on GitHub**" step of the release procedure. |
| 72 | + |
| 73 | +Ask for a review of the PR and merge it. |
| 74 | + |
| 75 | +Follow the ["**Production (subset of https://arduino.cc)**" instructions](https://github.com/bcmi-labs/wiki-content#production-subset-of-httpsarduinocc) in the `bcmi-labs/wiki-content` repository readme to deploy the updated "**Software**" page content. |
| 76 | + |
| 77 | +When the deploy workflow is done, check if links on the "**Software**" page are working: |
| 78 | + |
| 79 | +https://www.arduino.cc/en/software#future-version-of-the-arduino-ide |
| 80 | + |
| 81 | +## 😎 Brag about it |
| 82 | + |
| 83 | +- Ask in the `#product_releases` **Slack** channel to write a post for the social media and, if needed, a blog post. |
| 84 | +- Post a message on the forum (ask @per1234).<br /> |
| 85 | + Example: https://forum.arduino.cc/t/arduino-ide-2-0-0-rc9-3-available-for-download/1028858/4 |
| 86 | +- Write a message in the `#general` **Slack** channel: |
| 87 | + > Hey **Arduino**s! Updates from the **Tooling Team** :hammer_and_wrench: |
| 88 | + > |
| 89 | + > Arduino IDE 2.0.0 Beta 12 is out! :doge: You can download it from the [Download Page](https://www.arduino.cc/en/software#experimental-software) |
| 90 | + > The highlights of this release are: |
| 91 | + > |
| 92 | + > - auto-installation of arduino:avr at first startup |
| 93 | + > - improvement of Serial Monitor performances |
| 94 | + > - Arduino CLI upgrade to 0.19.1 |
| 95 | + > - Theia upgrade to 1.18.0 |
| 96 | + > - some bugfixing |
| 97 | + > |
| 98 | + > To see the details, you can take a look at the [Changelog](https://github.com/arduino/arduino-ide/releases/tag/2.0.0-beta.12) |
| 99 | + > If you want to post about it on social media and you need more details feel free to ask us on #team_tooling! :wink: |
0 commit comments