Compare commits

...

55 Commits
v6.0.0 ... main

Author SHA1 Message Date
Daniel Kennedy
484a0b528f
Update the readme (#473)
* Update the readme

* Update upload artifact versions

* Add back the GHES support note

* Update the skip-decompress description

* Be more specific with the direct download example

* Add GHES support section to TOC
2026-03-12 09:59:43 -04:00
Daniel Kennedy
3e5f45b2cf
Add regression tests for CJK characters (#471)
* Add regression tests for CJK characters

* Dedupe the names and remove the ignored `name` param

* Bump @actions/artifact to v6.2.1

* Run `npm run release`

* Update licenses
2026-03-11 11:35:54 -04:00
Daniel Kennedy
e6d03f6737
Add a regression test for artifact name + content-type mismatches (#472)
* Add a regression test for artifact name + content-type mismatches

* Specify that we want v4 in a comment

* Fix the expected type
2026-03-11 08:57:07 -04:00
Daniel Kennedy
70fc10c6e5
Merge pull request #461 from actions/danwkennedy/digest-mismatch-behavior
Add a setting to specify what to do on hash mismatch and default it to `error`
2026-02-23 15:27:01 -05:00
Daniel Kennedy
f258da9a50 Add change docs 2026-02-23 15:12:17 -05:00
Daniel Kennedy
ccc058e5fb Fix linting issues 2026-02-23 15:07:11 -05:00
Daniel Kennedy
bd7976ba57 Add a setting to specify what to do on hash mismatch and default it to error 2026-02-23 15:07:11 -05:00
Daniel Kennedy
ac21fcf45e
Merge pull request #460 from actions/danwkennedy/download-no-unzip
Don't attempt to un-zip non-zipped downloads
2026-02-23 15:05:25 -05:00
Daniel Kennedy
15999bff51 Add note about package bumps 2026-02-23 12:32:38 -05:00
Daniel Kennedy
974686ed50 Bump the version to v8 and add release notes 2026-02-23 12:31:19 -05:00
Daniel Kennedy
fbe48b1d27 Update test names to make it clearer what they do 2026-02-23 12:21:41 -05:00
Daniel Kennedy
96bf374a61 One more test fix 2026-02-23 12:18:06 -05:00
Daniel Kennedy
b8c4819ef5 Fix skip decompress test 2026-02-23 12:13:23 -05:00
Daniel Kennedy
7127277c52 Fixup the minimatch license 2026-01-30 15:53:50 -05:00
Daniel Kennedy
41a8b730f4 Re-add minimatch.dep.yml 2026-01-30 15:51:28 -05:00
Daniel Kennedy
6533bb2df3 Revert "Updated the licensed version"
This reverts commit e6afc5e70e.
2026-01-30 15:45:48 -05:00
Daniel Kennedy
e6afc5e70e Updated the licensed version 2026-01-30 15:44:23 -05:00
Daniel Kennedy
87db0e9f47 Cache licenses 2026-01-30 15:34:43 -05:00
Daniel Kennedy
c9ff097e79 Update the integration test 2026-01-30 14:45:33 -05:00
Daniel Kennedy
882c7072ac Add an integration test for skip-decompress 2026-01-30 14:33:56 -05:00
Daniel Kennedy
6d4a0de04f Add tests 2026-01-30 14:19:20 -05:00
Daniel Kennedy
f45b79f03c Don't attempt to un-zip non-zipped downloads 2026-01-30 14:16:38 -05:00
Daniel Kennedy
1d636af56d Upgrade jest and typescript 2026-01-30 14:15:49 -05:00
Daniel Kennedy
43c2394920 Migrate eslint to v9 2026-01-30 14:15:20 -05:00
Daniel Kennedy
3d65dc0e0b Update .gitignore 2026-01-30 14:14:33 -05:00
Salman Chishti
37930b1c2a
Merge pull request #452 from actions/download-artifact-v7-release
prepare release v7.0.0 for Node.js 24 support
2025-12-12 17:58:13 +00:00
Salman Muin Kayser Chishti
72582b9e0a doc: update readme 2025-12-12 17:39:35 +00:00
Salman Muin Kayser Chishti
0d2ec9d4cb chore: release v7.0.0 for Node.js 24 support
- Update to Node.js 24 runtime (runs.using: node24)
- Bump version to 7.0.0
- Update README with v7 release notes
- Rebuild dist
2025-12-12 17:28:48 +00:00
Salman Chishti
fd7ae8fda6
Merge pull request #451 from actions/fix-storage-blob
fix: update @actions/artifact to fix Node.js 24 punycode deprecation
2025-12-12 17:15:11 +00:00
Salman Muin Kayser Chishti
d484700543 chore: restore minimatch.dep.yml license file 2025-12-12 17:06:28 +00:00
Salman Muin Kayser Chishti
03a808050e chore: remove obsolete dependency license files 2025-12-12 17:00:38 +00:00
Salman Muin Kayser Chishti
56fe6d904b chore: update @actions/artifact license file to 5.0.1 2025-12-12 16:55:18 +00:00
Salman Muin Kayser Chishti
8e3ebc4ab4 chore: update package-lock.json with @actions/artifact@5.0.1 2025-12-12 16:48:18 +00:00
Salman Muin Kayser Chishti
1e3c4b4d49 fix: update @actions/artifact to ^5.0.0 for Node.js 24 punycode fix
Updates @actions/artifact dependency to use the published npm version
which includes @azure/storage-blob ^12.29.1 that fixes the punycode
deprecation warning on Node.js 24.
2025-12-12 16:48:12 +00:00
Salman Muin Kayser Chishti
458627d354 chore: use local @actions/artifact package for Node.js 24 testing
This branch uses a local file reference to @actions/artifact which includes
the updated @azure/storage-blob ^12.29.1 to fix the punycode deprecation
warning on Node.js 24.

This is a test branch - do not merge until @actions/artifact@5.0.1 is published.
2025-12-12 15:19:27 +00:00
Salman Chishti
623bd53c6d
Merge pull request #415 from salmanmkc/node24
Download Artifact Node24 support
2025-12-12 14:39:57 +00:00
Salman Muin Kayser Chishti
91bf594342 chore: add minimatch.dep.yml license file 2025-12-12 08:43:16 +00:00
Salman Muin Kayser Chishti
15367cc415 chore: regenerate license cache and fix @bufbuild/protobuf license 2025-12-12 08:34:51 +00:00
Salman Muin Kayser Chishti
983cbdef67 Merge upstream/main and resolve conflicts for node24 2025-12-12 08:29:56 +00:00
Salman Muin Kayser Chishti
24ef429fba chore: update @actions/artifact to use npm package v5.0.0
- Changed from file:../packages/artifact to 5.0.0
- Regenerated package-lock.json
2025-12-12 08:25:39 +00:00
Salman Muin Kayser Chishti
e4bf51d561 chore: update dependencies to use published npm packages 2025-12-11 19:47:24 +00:00
Salman Muin Kayser Chishti
36990830f2 chore: use local @actions/artifact and @actions/core packages 2025-12-09 11:17:38 +00:00
Zachary Taylor
f093f21ca4
Merge pull request #440 from patrikpolyak/patch-1
Update GHES guidance to include reference to Node 20 version
2025-11-03 09:42:58 -05:00
Patrik Polyak
6c8e9a74a3
Fix typo in URL 2025-10-31 10:22:40 +01:00
Patrik Polyak
9fdae6bee7
Update GHES guidance to include reference to Node 20 version 2025-10-31 10:19:21 +01:00
Salman Muin Kayser Chishti
e605cf51ad update dist 2025-10-15 15:19:18 +01:00
Salman Muin Kayser Chishti
a6c73a9235 update licences with temp not using package 2025-09-29 15:19:15 +01:00
Salman Muin Kayser Chishti
3d7939314b Revert licensed workflow changes - keep original behavior 2025-09-29 15:10:00 +01:00
Salman Muin Kayser Chishti
c69518956c Update licensed workflow to cache dependencies before status check 2025-09-29 15:03:02 +01:00
Salman Muin Kayser Chishti
1a965d5855 update 2025-09-29 14:57:31 +01:00
Salman Muin Kayser Chishti
9a17dd726a Fix licensed configuration by ignoring packages with missing license text 2025-09-29 14:57:12 +01:00
Salman Muin Kayser Chishti
d799cd6276 Update licensed configuration for new dependencies with Node 24 support 2025-09-29 14:55:53 +01:00
Salman Muin Kayser Chishti
f2793f092b update licenses 2025-09-29 14:52:08 +01:00
Salman Muin Kayser Chishti
d86c86bb47 Update to use local artifact package v3.0.0
- Switch from @actions/artifact@^2.3.2 to file:../packages/artifact
- Add uri-js-replace security override
- Update @actions/github to v6.0.1 for security fixes
- Rebuild dist/index.js with updated dependencies
- Fix all security vulnerabilities (0 remaining)
2025-09-29 14:18:17 +01:00
Salman Muin Kayser Chishti
426e7e1989 Update to Node.js 24 and related dependencies
Bump Node.js version to 24 in workflows, action definition, and package requirements. Update @types/node to 24.1.0 and add engines field to enforce Node.js >=24. This ensures compatibility with the latest Node.js features and ecosystem.
2025-07-29 13:57:02 +01:00
176 changed files with 77087 additions and 86779 deletions

View File

@ -1,3 +0,0 @@
node_modules/
lib/
dist/

View File

@ -1,15 +0,0 @@
{
"env": { "node": true, "jest": true },
"parser": "@typescript-eslint/parser",
"parserOptions": { "ecmaVersion": 9, "sourceType": "module" },
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"plugin:prettier/recommended"
],
"plugins": ["@typescript-eslint"]
}

View File

@ -20,10 +20,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Setup Node 20
- name: Setup Node 24
uses: actions/setup-node@v4
with:
node-version: 20.x
node-version: 24.x
cache: 'npm'
- name: Install dependencies

View File

@ -20,7 +20,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@ -22,10 +22,10 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node 20
- name: Setup Node 24
uses: actions/setup-node@v4
with:
node-version: 20.x
node-version: 24.x
cache: 'npm'
- name: npm install
@ -63,14 +63,14 @@ jobs:
path: path/to/artifact-B
# Test downloading a single artifact
- name: Download artifact A
- name: Download artifact A (absolute path)
uses: ./
with:
name: Artifact-A-${{ matrix.runs-on }}
path: some/new/path
# Test downloading an artifact using tilde expansion
- name: Download artifact A
- name: Download artifact A (tilde expansion)
uses: ./
with:
name: Artifact-A-${{ matrix.runs-on }}
@ -131,3 +131,192 @@ jobs:
Write-Error "File contents of downloaded artifacts are incorrect"
}
shell: pwsh
# Test downloading artifact without decompressing (skip-decompress)
- name: Download artifact A without decompressing
uses: ./
with:
name: Artifact-A-${{ matrix.runs-on }}
path: skip-decompress-test
skip-decompress: true
- name: Verify skip-decompress download
run: |
$rawFile = "skip-decompress-test/Artifact-A-${{ matrix.runs-on }}.zip"
if(!(Test-Path -path $rawFile))
{
Write-Error "Expected raw artifact file does not exist at $rawFile"
}
$fileInfo = Get-Item $rawFile
if($fileInfo.Length -eq 0)
{
Write-Error "Downloaded artifact file is empty"
}
Write-Host "Successfully downloaded artifact without decompressing: $rawFile (size: $($fileInfo.Length) bytes)"
shell: pwsh
# Regression test for artifact filename vs content-type mismatch
# When an archived artifact has a name with a file extension that doesn't
# match the blob type (e.g. "report.txt" but blob is zip), the server
# should append .zip to the content-disposition filename.
- name: Create and upload archived artifact with misleading extension
shell: bash
run: |
mkdir -p path/to/extension-test
echo '{"key": "value"}' > path/to/extension-test/data.json
- uses: actions/upload-artifact@v4 # V4 is important here to ensure we're supporting older versions correctly
with:
name: report.txt-${{ matrix.runs-on }}.json
path: path/to/extension-test/data.json
- name: Download misleading-extension artifact without decompressing
uses: ./
with:
name: report.txt-${{ matrix.runs-on }}.json
path: ext-test/raw
skip-decompress: true
- name: Verify downloaded file has .zip extension appended
shell: bash
run: |
expected="ext-test/raw/report.txt-${{ matrix.runs-on }}.json.zip"
if [ -f "$expected" ]; then
echo "PASS: Downloaded file has .zip appended: $expected"
else
echo "FAIL: Expected $expected but got:"
ls -al ext-test/raw/
exit 1
fi
# Test uploading and downloading artifacts with CJK (Chinese, Japanese, Korean) characters
# Regression test: certain non-ASCII chars (e.g. U+571F 土) caused 400 errors from
# Azure Blob Storage due to encoding issues in the Content-Disposition / rscd parameter
- name: Create artifacts with CJK names
shell: bash
run: |
mkdir -p path/to/cjk-artifacts
# Chinese - 土 (U+571F) known to fail, 日 (U+65E5) known to work
echo "Content for 土" > "path/to/cjk-artifacts/file-土-${{ matrix.runs-on }}.txt"
echo "Content for 中文测试" > "path/to/cjk-artifacts/file-中文测试-${{ matrix.runs-on }}.txt"
# Japanese - katakana and kanji
echo "Content for テスト" > "path/to/cjk-artifacts/file-テスト-${{ matrix.runs-on }}.txt"
echo "Content for 東京タワー" > "path/to/cjk-artifacts/file-東京タワー-${{ matrix.runs-on }}.txt"
# Korean - Hangul
echo "Content for 테스트" > "path/to/cjk-artifacts/file-테스트-${{ matrix.runs-on }}.txt"
echo "Content for 서울시" > "path/to/cjk-artifacts/file-서울시-${{ matrix.runs-on }}.txt"
- name: Upload CJK artifact - Chinese 土
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-土-${{ matrix.runs-on }}.txt
archive: false
- name: Upload CJK artifact - Chinese 中文测试
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-中文测试-${{ matrix.runs-on }}.txt
archive: false
- name: Upload CJK artifact - Japanese テスト
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-テスト-${{ matrix.runs-on }}.txt
archive: false
- name: Upload CJK artifact - Japanese 東京タワー
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-東京タワー-${{ matrix.runs-on }}.txt
archive: false
- name: Upload CJK artifact - Korean 테스트
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-테스트-${{ matrix.runs-on }}.txt
archive: false
- name: Upload CJK artifact - Korean 서울시
uses: actions/upload-artifact@v7
with:
path: path/to/cjk-artifacts/file-서울시-${{ matrix.runs-on }}.txt
archive: false
- name: Download CJK artifact - Chinese 土
uses: ./
with:
name: file-土-${{ matrix.runs-on }}.txt
path: cjk-download/土
- name: Download CJK artifact - Chinese 中文测试
uses: ./
with:
name: file-中文测试-${{ matrix.runs-on }}.txt
path: cjk-download/中文测试
- name: Download CJK artifact - Japanese テスト
uses: ./
with:
name: file-テスト-${{ matrix.runs-on }}.txt
path: cjk-download/テスト
- name: Download CJK artifact - Japanese 東京タワー
uses: ./
with:
name: file-東京タワー-${{ matrix.runs-on }}.txt
path: cjk-download/東京タワー
- name: Download CJK artifact - Korean 테스트
uses: ./
with:
name: file-테스트-${{ matrix.runs-on }}.txt
path: cjk-download/테스트
- name: Download CJK artifact - Korean 서울시
uses: ./
with:
name: file-서울시-${{ matrix.runs-on }}.txt
path: cjk-download/서울시
- name: Verify CJK artifact downloads
shell: bash
run: |
set -e
fail=0
check_file() {
local file="$1"
local expected="$2"
if [ ! -f "$file" ]; then
echo "FAIL: Missing file: $file"
fail=1
return
fi
actual=$(cat "$file")
if [ "$actual" != "$expected" ]; then
echo "FAIL: Content mismatch in $file"
echo " Expected: '$expected'"
echo " Got: '$actual'"
fail=1
return
fi
echo "PASS: $file"
}
echo "=== Chinese ==="
check_file "cjk-download/土/file-土-${{ matrix.runs-on }}.txt" "Content for 土"
check_file "cjk-download/中文测试/file-中文测试-${{ matrix.runs-on }}.txt" "Content for 中文测试"
echo "=== Japanese ==="
check_file "cjk-download/テスト/file-テスト-${{ matrix.runs-on }}.txt" "Content for テスト"
check_file "cjk-download/東京タワー/file-東京タワー-${{ matrix.runs-on }}.txt" "Content for 東京タワー"
echo "=== Korean ==="
check_file "cjk-download/테스트/file-테스트-${{ matrix.runs-on }}.txt" "Content for 테스트"
check_file "cjk-download/서울시/file-서울시-${{ matrix.runs-on }}.txt" "Content for 서울시"
if [ "$fail" -ne 0 ]; then
echo "Some CJK artifact checks failed"
ls -alR cjk-download/ || true
exit 1
fi
echo "All CJK artifact downloads verified successfully"

4
.gitignore vendored
View File

@ -2,4 +2,6 @@
node_modules/
# Ignore js files that are transpiled from ts files in src/
lib/
lib/
.DS_Store

View File

@ -9,7 +9,37 @@ allowed:
- mit
- cc0-1.0
- unlicense
- 0bsd
- blueoak-1.0.0
- other
- none
ignored:
npm:
- "buffers"
reviewed:
npm:
- fs.realpath
- fs.realpath
- "@actions/http-client"
- "@bufbuild/protobuf"
- "@pkgjs/parseargs"
- "@protobuf-ts/runtime"
- argparse
- chainsaw
- color-convert
- ieee754
- jackspeak
- lodash
- mdurl
- neo-async
- package-json-from-dist
- path-scurry
- readable-stream
- sax
- source-map
- string_decoder
- traverse
- tslib
- uglify-js
- wordwrap

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@azure/core-client.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@azure/core-xml.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@bufbuild/protobuf.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@isaacs/cliui.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/@typescript/vfs.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/abort-controller.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/ansi-regex-5.0.1.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/ansi-regex-6.2.2.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/ansi-styles-4.3.0.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/ansi-styles-6.2.3.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/b4a.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/bare-events.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/debug.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

BIN
.licenses/npm/emoji-regex-8.0.0.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/emoji-regex-9.2.2.dep.yml generated Normal file

Binary file not shown.

BIN
.licenses/npm/event-target-shim.dep.yml generated Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More