Skip to content

Don't attempt to un-zip non-zipped downloads - #460

Merged
danwkennedy merged 17 commits into
mainfrom
danwkennedy/download-no-unzip
Feb 23, 2026
Merged

danwkennedy merged 17 commits into
mainfrom
danwkennedy/download-no-unzip

Conversation

@danwkennedy

@danwkennedy danwkennedy commented Jan 30, 2026 •

Copy link
Copy Markdown
Contributor

Description

The toolkit has been updated to check the content-type header and URL for zipped files and intelligently decompress them if it detects a zip. This adds support for that flow to the action.

If a caller wants to download a compressed zip as-is, they can pass the new skip-decompress boolean.

Breaking changes:

  • The package has been converted to ESM (to support a similar change in @actions/artifact
  • We're changing the download behavior somewhat so we're making this opt-in

@danwkennedy
danwkennedy requested a review from a team as a code owner January 30, 2026 19:21
Copilot AI review requested due to automatic review settings January 30, 2026 19:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This pull request adds a new skip-decompress input parameter to allow users to download artifacts without automatic extraction, addressing scenarios where non-zipped artifacts should be handled as-is. Additionally, it performs a comprehensive migration from CommonJS to ES modules (ESM) and updates dependencies to newer versions.

Changes:

  • Added skip-decompress input parameter to control automatic artifact decompression
  • Migrated codebase from CommonJS to ES modules, including TypeScript configuration and test setup
  • Updated dependencies including @actions/artifact (^6.1.0), @actions/core (^3.0.0), and various dev dependencies

Reviewed changes

Copilot reviewed 10 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tsconfig.json Updated TypeScript compiler to use ES2022 target and NodeNext module resolution for ESM support
tsconfig.eslint.json Added separate TypeScript config for ESLint with proper file inclusions
src/download-artifact.ts Added skipDecompress input handling and passed it to downloadArtifact calls; updated import to use .js extension for ESM
src/constants.ts Added SkipDecompress constant to the Inputs enum
package.json Marked as ESM module, updated dependencies to newer versions, modified test script for ESM compatibility
jest.config.ts Converted to ESM export, added ESM configuration including ts-jest useESM option and module name mapping
eslint.config.mjs Replaced legacy .eslintrc.json with flat config format supporting ESM
dist/package.json Added package.json to dist directory marking it as an ES module
action.yml Added skip-decompress input with documentation
tests/download.test.ts Migrated tests to use ESM dynamic imports and added comprehensive test coverage for skip-decompress feature
.gitignore Added .DS_Store to ignored files
.eslintrc.json Removed legacy ESLint configuration file
.eslintignore Removed legacy ESLint ignore file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@danwkennedy
danwkennedy merged commit ac21fcf into main Feb 23, 2026
8 checks passed
@danwkennedy
danwkennedy deleted the danwkennedy/download-no-unzip branch February 23, 2026 20:05
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request Mar 3, 2026
… ci]

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
Release notes

*Sourced from [actions/download-artifact's releases](https://github.com/actions/download-artifact/releases).*

> v8.0.0
> ------
>
> v8 - What's new
> ---------------
>
> ### Direct downloads
>
> To support direct uploads in `actions/upload-artifact`, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the `Content-Type` header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new `skip-decompress` parameter to `false`.
>
> ### Enforced checks (breaking)
>
> A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the `digest-mismatch` parameter. To be secure by default, we are now defaulting the behavior to `error` which will fail the workflow run.
>
> ### ESM
>
> To support new versions of the @actions/\* packages, we've upgraded the package to ESM.
>
> What's Changed
> --------------
>
> * Don't attempt to un-zip non-zipped downloads by [`@​danwkennedy`](https://github.com/danwkennedy) in [actions/download-artifact#460](https://github.com/proxy/redirect.github.com/actions/download-artifact/pull/460)
> * Add a setting to specify what to do on hash mismatch and default it to `error` by [`@​danwkennedy`](https://github.com/danwkennedy) in [actions/download-artifact#461](https://github.com/proxy/redirect.github.com/actions/download-artifact/pull/461)
>
> **Full Changelog**: <actions/download-artifact@v7...v8.0.0>


Commits

* [`70fc10c`](actions/download-artifact@70fc10c) Merge pull request [#461](https://github.com/proxy/redirect.github.com/actions/download-artifact/issues/461) from actions/danwkennedy/digest-mismatch-behavior
* [`f258da9`](actions/download-artifact@f258da9) Add change docs
* [`ccc058e`](actions/download-artifact@ccc058e) Fix linting issues
* [`bd7976b`](actions/download-artifact@bd7976b) Add a setting to specify what to do on hash mismatch and default it to `error`
* [`ac21fcf`](actions/download-artifact@ac21fcf) Merge pull request [#460](https://github.com/proxy/redirect.github.com/actions/download-artifact/issues/460) from actions/danwkennedy/download-no-unzip
* [`15999bf`](actions/download-artifact@15999bf) Add note about package bumps
* [`974686e`](actions/download-artifact@974686e) Bump the version to `v8` and add release notes
* [`fbe48b1`](actions/download-artifact@fbe48b1) Update test names to make it clearer what they do
* [`96bf374`](actions/download-artifact@96bf374) One more test fix
* [`b8c4819`](actions/download-artifact@b8c4819) Fix skip decompress test
* Additional commits viewable in [compare view](actions/download-artifact@37930b1...70fc10c)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=actions/download-artifact&package-manager=github\_actions&previous-version=7.0.0&new-version=8.0.0)](https://github.com/proxy/docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
tae898 pushed a commit to humemai/arcadedb-embedded-python that referenced this pull request Jun 28, 2026
… ci]

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
Release notes

*Sourced from [actions/download-artifact's releases](https://github.com/actions/download-artifact/releases).*

> v8.0.0
> ------
>
> v8 - What's new
> ---------------
>
> ### Direct downloads
>
> To support direct uploads in `actions/upload-artifact`, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the `Content-Type` header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new `skip-decompress` parameter to `false`.
>
> ### Enforced checks (breaking)
>
> A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the `digest-mismatch` parameter. To be secure by default, we are now defaulting the behavior to `error` which will fail the workflow run.
>
> ### ESM
>
> To support new versions of the @actions/\* packages, we've upgraded the package to ESM.
>
> What's Changed
> --------------
>
> * Don't attempt to un-zip non-zipped downloads by [`@​danwkennedy`](https://github.com/danwkennedy) in [actions/download-artifact#460](https://github.com/proxy/redirect.github.com/actions/download-artifact/pull/460)
> * Add a setting to specify what to do on hash mismatch and default it to `error` by [`@​danwkennedy`](https://github.com/danwkennedy) in [actions/download-artifact#461](https://github.com/proxy/redirect.github.com/actions/download-artifact/pull/461)
>
> **Full Changelog**: <actions/download-artifact@v7...v8.0.0>


Commits

* [`70fc10c`](actions/download-artifact@70fc10c) Merge pull request [#461](https://github.com/proxy/redirect.github.com/actions/download-artifact/issues/461) from actions/danwkennedy/digest-mismatch-behavior
* [`f258da9`](actions/download-artifact@f258da9) Add change docs
* [`ccc058e`](actions/download-artifact@ccc058e) Fix linting issues
* [`bd7976b`](actions/download-artifact@bd7976b) Add a setting to specify what to do on hash mismatch and default it to `error`
* [`ac21fcf`](actions/download-artifact@ac21fcf) Merge pull request [#460](https://github.com/proxy/redirect.github.com/actions/download-artifact/issues/460) from actions/danwkennedy/download-no-unzip
* [`15999bf`](actions/download-artifact@15999bf) Add note about package bumps
* [`974686e`](actions/download-artifact@974686e) Bump the version to `v8` and add release notes
* [`fbe48b1`](actions/download-artifact@fbe48b1) Update test names to make it clearer what they do
* [`96bf374`](actions/download-artifact@96bf374) One more test fix
* [`b8c4819`](actions/download-artifact@b8c4819) Fix skip decompress test
* Additional commits viewable in [compare view](actions/download-artifact@37930b1...70fc10c)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=actions/download-artifact&package-manager=github\_actions&previous-version=7.0.0&new-version=8.0.0)](https://github.com/proxy/docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
vbraun pushed a commit to sagemath/sage that referenced this pull request Jul 26, 2026
Release Manager
gh-42561: build(deps): bump actions/download-artifact from 6 to 8
    
Bumps [actions/download-artifact](https://github.com/actions/download-
artifact) from 6 to 8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/download-
artifact/releases">actions/download-artifact's releases</a>.</em></p>
<blockquote>
<h2>v8.0.0</h2>
<h2>v8 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/download-artifact@v8 has been migrated to an ESM module. This
should be transparent to the caller but forks might need to make
significant changes.</p>
</blockquote>
<blockquote>
<p>[!IMPORTANT]
Hash mismatches will now error by default. Users can override this
behavior with a setting change (see below).</p>
</blockquote>
<h3>Direct downloads</h3>
<p>To support direct uploads in <code>actions/upload-artifact</code>,
the action will no longer attempt to unzip all downloaded files.
Instead, the action checks the <code>Content-Type</code> header ahead of
unzipping and skips non-zipped files. Callers wishing to download a
zipped file as-is can also set the new <code>skip-decompress</code>
parameter to <code>true</code>.</p>
<h3>Enforced checks (breaking)</h3>
<p>A previous release introduced digest checks on the download. If a
download hash didn't match the expected hash from the server, the action
would log a warning. Callers can now configure the behavior on mismatch
with the <code>digest-mismatch</code> parameter. To be secure by
default, we are now defaulting the behavior to <code>error</code> which
will fail the workflow run.</p>
<h3>ESM</h3>
<p>To support new versions of the @actions/* packages, we've upgraded
the package to ESM.</p>
<h2>What's Changed</h2>
<ul>
<li>Don't attempt to un-zip non-zipped downloads by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/460">actions/download-artifact#460</a></li>
<li>Add a setting to specify what to do on hash mismatch and default it
to <code>error</code> by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/461">actions/download-artifact#461</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-
artifact/compare/v7...v8.0.0">https://github.com/actions/download-
artifact/compare/v7...v8.0.0</a></p>
<h2>v7.0.0</h2>
<h2>v7 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/download-artifact@v7 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v6 had preliminary
support for Node 24, however this action was by default still running on
Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Update GHES guidance to include reference to Node 20 version by <a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
in <a href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/440">actions/download-artifact#440</a></li>
<li>Download Artifact Node24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/415">actions/download-artifact#415</a></li>
<li>fix: update <code>@​actions/artifact</code> to fix Node.js 24
punycode deprecation by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/451">actions/download-artifact#451</a></li>
<li>prepare release v7.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/452">actions/download-artifact#452</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
made their first contribution in <a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/440">actions/download-artifact#440</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/pull/415">actions/download-artifact#415</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-
artifact/compare/v6.0.0...v7.0.0">https://github.com/actions/download-
artifact/compare/v6.0.0...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="actions/download-artifact@3e5f45b
2cfb9172054b4087a40e8e0b5a5461e7c"><code>3e5f45b</code></a> Add
regression tests for CJK characters (<a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/issues/471">#471</a>)</li>
<li><a href="actions/download-artifact@e6d03f6
7377d4412c7aa56a8e2e4988e6ec479dd"><code>e6d03f6</code></a> Add a
regression test for artifact name + content-type mismatches (<a
href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/issues/472">#472</a>)</li>
<li><a href="actions/download-artifact@70fc10c
6e5e1ce46ad2ea6f2b72d43f7d47b13c3"><code>70fc10c</code></a> Merge pull
request <a href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/issues/461">#461</a> from actions/danwkennedy/digest-mismatch-
behavior</li>
<li><a href="actions/download-artifact@f258da9
a506b755b84a09a531814700b86ccfc62"><code>f258da9</code></a> Add change
docs</li>
<li><a href="actions/download-artifact@ccc058e
5fbb0bb2352213eaec3491e117cbc4a5c"><code>ccc058e</code></a> Fix linting
issues</li>
<li><a href="actions/download-artifact@bd7976b
a57ecea96e6f3df575eb922d11a12a9fd"><code>bd7976b</code></a> Add a
setting to specify what to do on hash mismatch and default it to
<code>error</code></li>
<li><a href="actions/download-artifact@ac21fcf
45e0aaee541c0f7030558bdad38d77d6c"><code>ac21fcf</code></a> Merge pull
request <a href="https://github.com/proxy/redirect.github.com/actions/download-
artifact/issues/460">#460</a> from actions/danwkennedy/download-no-
unzip</li>
<li><a href="actions/download-artifact@15999bf
f51058bc7c19b50ebbba518eaef7c26c0"><code>15999bf</code></a> Add note
about package bumps</li>
<li><a href="actions/download-artifact@974686e
d5098c7f9c9289ec946b9058e496a2561"><code>974686e</code></a> Bump the
version to <code>v8</code> and add release notes</li>
<li><a href="actions/download-artifact@fbe48b1
d2756394be4cd4358ed3bc1343b330e75"><code>fbe48b1</code></a> Update test
names to make it clearer what they do</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-
artifact/compare/v6...v8">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-
badges.githubapp.com/badges/compatibility_score?dependency-
name=actions/download-artifact&package-manager=github_actions&previous-
version=6&new-version=8)](https://github.com/proxy/docs.github.com/en/github/managing-
security-vulnerabilities/about-dependabot-security-updates#about-
compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
    
URL: #42561
Reported by: dependabot[bot]
Reviewer(s):
dbmikus pushed a commit to gofixpoint/amika that referenced this pull request Oct 23, 2026
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.3.0 to 8.0.2.

## Release notes

Sourced from actions/download-artifact's releases.

### v8.0.2

### What's Changed
- Update the readme by `@danwkennedy` in actions/download-artifact#473
- Improves artifact download retries when the service returns HTTP 429 (rate limiting), including honoring valid Retry-After headers.
- Update `@actions/artifact` to 6.3.1 by `@tunc-d` in actions/download-artifact#492
- Prepare download-artifact v8.0.2 by `@tunc-d` in actions/download-artifact#493

### New Contributors
- `@tunc-d` made their first contribution in actions/download-artifact#492

Full Changelog: actions/download-artifact@v8.0.1...v8.0.2

### v8.0.1

### What's Changed
- Support for CJK characters in the artifact name by `@danwkennedy` in actions/download-artifact#471
- Add a regression test for artifact name + content-type mismatches by `@danwkennedy` in actions/download-artifact#472

Full Changelog: actions/download-artifact@v8...v8.0.1

### v8.0.0

### v8 - What's new

[!IMPORTANT]
actions/download-artifact@v8 has been migrated to an ESM module. This should be transparent to the caller but forks might need to make significant changes.

[!IMPORTANT]
Hash mismatches will now error by default. Users can override this behavior with a setting change (see below).

### Direct downloads

To support direct uploads in `actions/upload-artifact`, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the `Content-Type` header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new `skip-decompress` parameter to `true`.

### Enforced checks (breaking)

A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the `digest-mismatch` parameter. To be secure by default, we are now defaulting the behavior to `error` which will fail the workflow run.

### ESM

To support new versions of the @actions/* packages, we've upgraded the package to ESM.

### What's Changed
- Don't attempt to un-zip non-zipped downloads by `@danwkennedy` in actions/download-artifact#460
- Add a setting to specify what to do on hash mismatch and default it to `error` by `@danwkennedy` in actions/download-artifact#461

Full Changelog: actions/download-artifact@v7...v8.0.0

### v7.0.0

### v7 - What's new

... (truncated)

## Commits
- `9000827` Merge pull request #493 from actions/tunc-d-prepare-download-v8-0-2
- `e455989` Prepare download-artifact v8.0.2
- `a00b90c` Merge pull request #492 from actions/tunc-d-download-artifact-package-bump
- `29bb7ce` Update `@actions/artifact` to 6.3.1
- `484a0b5` Update the readme (#473)
- `3e5f45b` Add regression tests for CJK characters (#471)
- `e6d03f6` Add a regression test for artifact name + content-type mismatches (#472)
- `70fc10c` Merge pull request #461 from actions/danwkennedy/digest-mismatch-behavior
- `f258da9` Add change docs
- `ccc058e` Fix linting issues
- Additional commits viewable in compare view
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants