Skip to content

Don't upload "channel update info files" related to manual builds to S3 on release #2020

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

Merged
merged 1 commit into from
Apr 19, 2023

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Apr 18, 2023

Motivation

Arduino IDE offers an update to the user when a newer version is available. The availability of an update is determined by comparing the user's IDE version against data file ("channel update info file") stored on Arduino's download server.

These "channel update info files" are automatically generated by the build workflow.

Previously the release process was fully automated, including the upload of the "channel update info files" to the server.

As a temporary workaround for limitations of the GitHub Actions runner machines used to produce the automated builds, some release builds are now produced manually:

  • Linux build (because the Ubuntu 18.04 runner was shut down and newer runner versions produce builds incompatible with older Linux versions)
  • macOS Apple Silicon build (because GitHub hosted Apple Silicon runners are not available)

The automatic upload of the "channel update info files" produced by the build workflow is problematic because if users receive update offers before the "channel update info files" are updated for the manually produced builds, they can receive an update to a different build than intended:

  • Users of older Linux versions would update to a build that won't start on their machine
  • macOS Apple Silicon users would update to macOS x86 build that is less performant on their machine

Change description

For this reason, the build workflow is adjusted to no longer upload the Linux and macOS "channel update info files" to the download server on release. These files will now be manually uploaded after they have been updated to provide the manually produced builds.

This workaround will be reverted once a fully automated release system is regained.

Other information

I did a test release in my fork using the workflow with the modifications from this PR:

https://github.com/per1234/arduino-ide/actions/runs/4730050364

Since it was a test run, the step that uploads the files to S3 was disabled, but the files that would have been uploaded can be seen in the s3-files workflow artifact:

s3-files.zip/
├── arduino-ide_2.1.0_Linux_64bit.AppImage
├── arduino-ide_2.1.0_Linux_64bit.zip
├── arduino-ide_2.1.0_Windows_64bit.exe*
├── arduino-ide_2.1.0_Windows_64bit.msi
├── arduino-ide_2.1.0_Windows_64bit.zip
├── arduino-ide_2.1.0_macOS_64bit.dmg
├── arduino-ide_2.1.0_macOS_64bit.zip
└── stable.yml

Reviewer checklist

  • PR addresses a single concern.
  • The PR has no duplicates (please search among the Pull Requests before creating one)
  • PR title and description are properly filled.
  • Docs have been added / updated (for bug fixes / features)

…S3 on release

Arduino IDE offers an update to the user when a newer version is available. The availability of an update is determined
by comparing the user's IDE version against data file ("channel update info file") stored on Arduino's download server.

These "channel update info files" are automatically generated by the build workflow.

Previously the release process was fully automated, including the upload of the "channel update info files" to the
server.

As a temporary workaround for limitations of the GitHub Actions runner machines used to produce the automated builds,
some release builds are now produced manually:

- Linux build (because the Ubuntu 18.04 runner was shut down and newer runner versions produce builds incompatible with
  older Linux versions)
- macOS Apple Silicon build (because GitHub hosted Apple Silicon runners are not available)

The automatic upload of the "channel update info files" produced by the build workflow is problematic because if users
receive update offers before the "channel update info files" are updated for the manually produced builds, they can
receive an update to a different build than intended:

- Users of older Linux versions would update to a build that won't start on their machine
- macOS Apple Silicon users would update to macOS x86 build that is less performant on their machine

For this reason, the build workflow is adjusted to no longer upload the Linux and macOS "channel update info files" to
the download server on release. These files will now be manually uploaded after they have been updated to provide the
manually produced builds.

This workaround will be reverted once a fully automated release system is regained.
@per1234 per1234 added type: enhancement Proposed improvement topic: infrastructure Related to project infrastructure labels Apr 18, 2023
@per1234 per1234 self-assigned this Apr 18, 2023
@per1234 per1234 requested a review from kittaakos April 18, 2023 15:11
Copy link
Contributor

@kittaakos kittaakos left a comment

Choose a reason for hiding this comment

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

Thank you!

I verified that the modified workflow removes the channel files before the S3 upload. See here.

@per1234 per1234 merged commit 2c74ad6 into arduino:main Apr 19, 2023
@per1234 per1234 deleted the skip-channel-file-upload-s3 branch April 19, 2023 06:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: infrastructure Related to project infrastructure type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants