Skip to content

Conversation

@per1234
Copy link
Contributor

@per1234 per1234 commented Nov 2, 2025

The "Release" and "Publish Nightly Build" workflows upload the generated build files to the AWS S3 bucket used by Arduino's downloads server.

The necessary credentials are configured in Arduino's repository. However, these workflows might be used in other contexts:

  • by contributors validating proposed changes to the release infrastructure in their fork
  • by hard forks of the project

In either case (especially the former), the fork owner is unlikely to be willing/able to set up the AWS infrastructure that would be needed to use this capability of the workflow.

Since these workflows also publish the builds to GitHub, the AWS upload is not essential to either 3rd party use case.

The workflow code is hereby configured to skip the AWS upload steps if the necessary credentials have not been configured in the repository. The existence of the AWS_ROLE_TO_ASSUME repository secret is used as the indicator of whether the credentials are configured. This will allow runs of the workflow in forks without the need to remove the AWS upload steps.

The "Publish Nightly Build" GitHub Actions workflow calculates checksums of the generated builds and writes them to a
file. This file may be used to validate downloads of the builds.

In addition to uploading the builds to Arduino's downloads server, the workflow also uploads them to GitHub Actions
workflow artifacts. These artifacts may serve as an alternative source of the nightly builds (similar to the tester
builds).

Previously the checksum generation was performed in the workflow's "publish-nightly" job, which is used to upload the
builds to Arduino's downloads server. In addition to being outside the stated scope of that job, this also meant that
the checksum file was only available from Arduino's downloads server, and not from the workflow artifacts.

Moving the checksum generation code to a dedicated job limits the operations in the important "publish-nightly" job
exclusively to its stated scope. This also results in the checksum file being available as a workflow artifact.
The "Release" and "Publish Nightly Build" workflows upload the generated build files to the AWS S3 bucket used by
Arduino's downloads server.

The necessary credentials are configured in Arduino's repository. However, these workflows might be used in other
contexts:

- by contributors validating proposed changes to the release infrastructure in their fork
- by hard forks of the project

In either case (especially the former), the fork owner is unlikely to be willing/able to set up the AWS infrastructure
that would be needed to use this capability of the workflow.

Since these workflows also publish the builds to GitHub, the AWS upload is not essential to either 3rd party use case.

The workflow code is hereby configured to skip the AWS upload steps if the necessary credentials have not been
configured in the repository. The existence of the `AWS_ROLE_TO_ASSUME` repository secret is used as the indicator of
whether the credentials are configured. This will allow runs of the workflow in forks without the need to remove the AWS
upload steps.
@per1234 per1234 self-assigned this Nov 2, 2025
@per1234 per1234 added type: enhancement Proposed improvement topic: infrastructure Related to project infrastructure labels Nov 2, 2025
@per1234 per1234 merged commit 971bea8 into arduino:main Nov 2, 2025
8 checks passed
@per1234 per1234 deleted the conditional-aws-upload branch November 2, 2025 14:47
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.

1 participant