-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
artifact(download): skip non-zip files #1874
base: main
Are you sure you want to change the base?
Conversation
17ec324
to
4ec46bb
Compare
Added some tests @robherley Sorry for the ping but let me know if this needs anything else for review. |
core.info(`Artifact download completed successfully.`) | ||
return {downloadPath, skipped: false} | ||
} else { | ||
core.info(`Artifact download skipped.`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a user requests a specific artifact to download and that artifact can't be downloaded, why should that silently fail?
Shouldn't that be an error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm reluctant to change the default behavior here as it could be a breaking change for users.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
iiuc the API only expects zip content type for extraction when used with actions/download-artifact@v4
:
.pipe(unzip.Extract({path: directory})) |
And it currently breaks workflows when artifacts with other content-type are being downloaded.
I guess we could create an error type if content type does not match so actions/download-artifact
can catch it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought silently skipping unrelated artifacts not uploaded with actions/upload-artifact
would be best so it doesn't require any changes in actions/download-artifact
.
relates to actions/download-artifact#328 (comment)
At docker we are using the API to upload a build export artifact and we are not using zip format but gzip one:
When using the
actions/download-artifact
action, workflow would fail:As the download API expects a valid zip content type:
toolkit/packages/artifact/src/internal/download/download-artifact.ts
Line 92 in bb2278e
I think we should just skip downloading artifacts that don't have the expected content-type before extracting them.
Can be tested with:
In this workflow we have two files downloaded by "Download artifacts" step. After adding some logging on response headers we can see that the regular artifact uploaded with
actions/upload-artifact@v4
haszip
ascontent-type
header but one uploaded bydocker/build-push-action
hasapplication/gzip
:Step logs:
I think this change should mitigate this issue by making sure we try to extract a valid zip file. And with the deprecation of v3 on December 5, 2024 and brownouts coming in, we are going to have more reports.
cc @thompson-shaun @colinhemmings @tonistiigi