Skip to content

Migrate workflows from deprecated set-output commands #1604

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
Nov 4, 2022
Merged

Migrate workflows from deprecated set-output commands #1604

merged 1 commit into from
Nov 4, 2022

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Oct 31, 2022

Motivation

GitHub Actions provides the capability for workflow authors to use the capabilities of the GitHub Actions ToolKit package directly in the run keys of workflows via "workflow commands". One such command is set-output, which allows data to be passed out of a workflow step as an output.

It has been determined that this command has potential to be a security risk in some applications. For this reason, GitHub has deprecated the command and a warning of this is shown in the workflow run summary page of any workflow using it:

The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

The identical capability is now provided in a safer form via the GitHub Actions "environment files" system.

Change description

Migrate the use of the deprecated workflow commands to use the GITHUB_OUTPUT environment file to fix any potential vulnerabilities in the workflows, resolve the warnings, and avoid the eventual complete breakage of the workflows that would result from GitHub's planned removal of the set-output workflow command 2023-05-31.

Other information

Upstream migration of the "template" workflows: arduino/tooling-project-assets#281

Equivalent migration for Arduino CLI repository: arduino/arduino-cli#1940

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)

@per1234 per1234 added topic: infrastructure Related to project infrastructure type: imperfection Perceived defect in any part of project labels Oct 31, 2022
@per1234 per1234 self-assigned this Oct 31, 2022
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.

The number of deprecated set-output warnings are significantly less than for other builds. 🎉 But there are still a few warnings. Do you happen to know where they're coming from? I found the same set of ::set-output calls you have already changed, so I could not figure out why there are still warnings. Thanks!

A few examples:

Screen Shot 2022-11-03 at 15 23 04

Screen Shot 2022-11-03 at 15 23 08

Screen Shot 2022-11-03 at 15 23 18

Screen Shot 2022-11-03 at 15 23 36

@per1234
Copy link
Contributor Author

per1234 commented Nov 3, 2022

there are still a few warnings. Do you happen to know where they're coming from?

@kittaakos In addition to use directly in workflows, the commands are also used by the setOutput function of older versions of the GitHub Actions Toolkit

So actions used in the workflows can also produce these warnings. Those warnings are resolved by updating to newer versions of the actions which have updated their @actions/core dependency to 1.10.0 or newer.

I triggered the workflow again after merging the first set of action bump PRs from Dependabot and there are no more warnings about use of set-output commands in the workflow run summary pages:

https://github.com/arduino/arduino-ide/actions/runs/3389582993
https://github.com/arduino/arduino-ide/actions/runs/3389582968

So I think we are all set now.

There are still some outdated actions because the Dependabot only submits 5 PRs at a time by default, but it looks like those actions only produce the Node.js 12 deprecation warnings.

GitHub Actions provides the capability for workflow authors to use the capabilities of the GitHub Actions ToolKit
package directly in the `run` keys of workflows via "workflow commands". One such command is `set-output`, which allows
data to be passed out of a workflow step as an output.

It has been determined that this command has potential to be a security risk in some applications. For this reason,
GitHub has deprecated the command and a warning of this is shown in the workflow run summary page of any workflow using
it:

The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more
information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

The identical capability is now provided in a safer form via the GitHub Actions "environment files" system. Migrating
the use of the deprecated workflow commands to use the `GITHUB_OUTPUT` environment file instead fixes any potential
vulnerabilities in the workflows, resolves the warnings, and avoids the eventual complete breakage of the workflows that
would result from GitHub's planned removal of the `set-output` workflow command 2023-05-31.
@kittaakos kittaakos self-requested a review November 4, 2022 07:38
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.

So I think we are all set now.

Yes, we are. Thank you! After you've merged #1605, I've understood where the other warnings are coming from.

@per1234 per1234 merged commit 8a85b5c into arduino:main Nov 4, 2022
@per1234 per1234 deleted the migrate-set-output branch November 4, 2022 07:45
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: imperfection Perceived defect in any part of project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants