Skip to content

Commit 9d99d14

Browse files
committed
Update manual release procedure documentation to reflect implementation of automated builds for macOS ARM
Previously, the production of the builds for the Apple Silicon host target was a manual procedure. This was done due to the lack of availability of GitHub hosted runner machines of that architecture. Fortunately such runners are now available, which allowed us to set up automated builds for this target. For this reason, it is no longer necessary to maintain documentation of the manual release procedure for that target.
1 parent 8959aec commit 9d99d14

File tree

3 files changed

+2
-134
lines changed

3 files changed

+2
-134
lines changed

docs/internal/release-procedure.md

Lines changed: 1 addition & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,7 @@ replacing `<YOUR_VERSION>` with the version you want. Then create a PR and merge
177177

178178
## Manual build
179179

180-
Creating the release for Ubuntu 18.04 ([arduino/arduino-ide#2018](https://github.com/arduino/arduino-ide/issues/2018)) and macOS M1 ([arduino/arduino-ide#408](https://github.com/arduino/arduino-ide/issues/408)) is a manual procedure.
181-
182-
### Ubuntu 18.04
180+
Creating the release for Ubuntu 18.04 ([arduino/arduino-ide#2018](https://github.com/arduino/arduino-ide/issues/2018)) is a manual procedure:
183181

184182
- Prerequisites:
185183
- Ask the DevOps team for an EC2 instance with at least 8 GB of RAM.
@@ -232,87 +230,6 @@ Creating the release for Ubuntu 18.04 ([arduino/arduino-ide#2018](https://github
232230
- `arduino-ide_${VERSION}_Linux_64bit.zip`, and
233231
- `stable-linux.yml`
234232

235-
### macOS M1
236-
237-
- Prerequisites:
238-
239-
- You need access to the shared Mac Mini at Toolbox. Use TeamViewer.
240-
- You have access to the `FT Web Tooling` 1Password vault.
241-
242-
- Clone:
243-
244-
```sh
245-
BRANCH="<TODO: release branch name>"
246-
git clone --single-branch --branch $BRANCH https://github.com/arduino/arduino-ide.git
247-
```
248-
249-
- Setup:
250-
251-
- Download the `Pro-IDE-Certificates.p12` file from the `Arduino Pro IDE Apple Developer ID Certificate .p12 format` 1Password vault item and put it somewhere on the Mac Mini. This example assumes you put the `.p12` file in the `arduino-ide` repository root, and your `cwd` is also in the `arduino-ide` repository root.
252-
- The following environment variables must be available from the shell:
253-
254-
- `AC_PASSWORD`: From the `Arduino Apple developer ID App Specific Password` 1Password vault item
255-
- `AC_USERNAME`: From the `Arduino Apple developer ID App Specific Password` 1Password vault item
256-
- `AC_TEAM_ID`: "KT7ZWMCJT"
257-
- `CSC_KEY_PASSWORD`: from the `Arduino Pro IDE Apple Developer ID certificate keychain password` 1Password vault item
258-
- `CSC_LINK`: Path to the `Pro-IDE-Certificates.p12` file on the Mac Mini
259-
- `IS_RELEASE`: "true"
260-
- `CAN_SIGN`: "true"
261-
- `MACOS_FORCE_NOTARIZE`: "true"
262-
263-
```sh
264-
export AC_PASSWORD="***"
265-
export AC_USERNAME="***"
266-
export AC_TEAM_ID="7KT7ZWMCJT"
267-
export CSC_KEY_PASSWORD="***"
268-
export CSC_LINK="`pwd`/Pro-IDE-Certificates.p12"
269-
export IS_RELEASE="true"
270-
export CAN_SIGN="true"
271-
export MACOS_FORCE_NOTARIZE="true"
272-
export CI="true"
273-
```
274-
275-
- Build:
276-
277-
```sh
278-
./scripts/package.sh
279-
```
280-
281-
> Make sure to change directory, and execute the script from the root of the `arduino-ide` repository.
282-
283-
- Verify:
284-
285-
Since you cannot drag and drop via TeamViewer, you will install the app from a command line. This example puts the IDE2 into the Desktop. Do **NOT** try to bypass the installation with a double click and open from the UI. The `node_modules` folder of the source code is implicitly in the `$PATH`, and you want to verify if the app is fully functional without the `node_modules` folder.
286-
287-
```sh
288-
VERSION="<TODO: release version>"
289-
hdiutil attach ./electron-app/dist/arduino-ide_${VERSION}_macOS_arm64.dmg \
290-
&& cp -R /Volumes/Arduino\ IDE\ ${VERSION}-arm64/Arduino\ IDE.app ~/Desktop \
291-
&& hdiutil unmount /Volumes/Arduino\ IDE\ ${VERSION}-arm64 \
292-
&& codesign -dv --verbose=4 ~/Desktop/Arduino\ IDE.app \
293-
&& ~/Desktop/Arduino\ IDE.app/Contents/MacOS/Arduino\ IDE
294-
```
295-
296-
- Cleanup:
297-
298-
- You **MUST** close the shell after the build.
299-
- You **MUST** delete the `.p12` file and empty the trash afterward.
300-
301-
- Artifacts:
302-
- You have to upload the following artifacts from `./arduino-ide/electron-app/dist` to S3, but first, you must create the final channel file from the `latest-mac.yaml`:
303-
- `arduino-ide_${VERSION}_macOS_arm64.dmg`,
304-
- `arduino-ide_${VERSION}_macOS_arm64.zip`, and
305-
- `stable-mac.yml`
306-
- To create the final channel file, do the followings:
307-
- Copy the `stable-mac.yml` file from the Mac Mini to a folder and rename it to `stable-mac-ARM64.yml`.
308-
- Download the `stable-mac.yaml` produced by GitHub Actions from the latest release, rename it to `stable-mac-X64.yml`, and put it in the same folder where you put the file from the Mac Mini.
309-
- Run the channel file merger:
310-
```sh
311-
node ./scripts/merge-channel-files.js ./path/to/folder/with/channel/files --no-cleanup
312-
```
313-
> Although, the `--no-cleanup` flag is not mandatory to merge the channel files, it instructs the merger to keep the original channel files.
314-
- You have the merged channel file that you need to upload to S3.
315-
316233
### FAQ
317234

318235
- Q: I see no `stable` channel files, only `latest`.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"eslint-plugin-unused-imports": "^2.0.0",
2323
"husky": "^6.0.0",
2424
"ignore-styles": "^5.0.1",
25-
"js-yaml": "^4.1.0",
26-
"lerna": "^6.1.0",
25+
"lerna": "^7.1.4",
2726
"lint-staged": "^11.0.0",
2827
"node-fetch": "^2.6.1",
2928
"node-gyp": "^9.3.0",

scripts/merge-channel-files.js

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)