@actions/artifact 6.0.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DownloadArtifactOptions, DownloadArtifactResponse, StreamExtractResponse } from '../shared/interfaces.js';
|
|
2
2
|
export declare function streamExtractExternal(url: string, directory: string, opts?: {
|
|
3
|
-
timeout
|
|
3
|
+
timeout?: number;
|
|
4
|
+
skipDecompress?: boolean;
|
|
4
5
|
}): Promise<StreamExtractResponse>;
|
|
5
6
|
export declare function downloadArtifactPublic(artifactId: number, repositoryOwner: string, repositoryName: string, token: string, options?: DownloadArtifactOptions): Promise<DownloadArtifactResponse>;
|
|
6
7
|
export declare function downloadArtifactInternal(artifactId: number, options?: DownloadArtifactOptions): Promise<DownloadArtifactResponse>;
|
|
@@ -8,8 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import fs from 'fs/promises';
|
|
11
|
+
import * as fsSync from 'fs';
|
|
11
12
|
import * as crypto from 'crypto';
|
|
12
13
|
import * as stream from 'stream';
|
|
14
|
+
import * as path from 'path';
|
|
13
15
|
import * as github from '@actions/github';
|
|
14
16
|
import * as core from '@actions/core';
|
|
15
17
|
import * as httpClient from '@actions/http-client';
|
|
@@ -41,12 +43,12 @@ function exists(path) {
|
|
|
41
43
|
}
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
|
-
function streamExtract(url, directory) {
|
|
46
|
+
function streamExtract(url, directory, skipDecompress) {
|
|
45
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
48
|
let retryCount = 0;
|
|
47
49
|
while (retryCount < 5) {
|
|
48
50
|
try {
|
|
49
|
-
return yield streamExtractExternal(url, directory);
|
|
51
|
+
return yield streamExtractExternal(url, directory, { skipDecompress });
|
|
50
52
|
}
|
|
51
53
|
catch (error) {
|
|
52
54
|
retryCount++;
|
|
@@ -59,36 +61,55 @@ function streamExtract(url, directory) {
|
|
|
59
61
|
});
|
|
60
62
|
}
|
|
61
63
|
export function streamExtractExternal(url_1, directory_1) {
|
|
62
|
-
return __awaiter(this, arguments, void 0, function* (url, directory, opts = {
|
|
64
|
+
return __awaiter(this, arguments, void 0, function* (url, directory, opts = {}) {
|
|
65
|
+
const { timeout = 30 * 1000, skipDecompress = false } = opts;
|
|
63
66
|
const client = new httpClient.HttpClient(getUserAgentString());
|
|
64
67
|
const response = yield client.get(url);
|
|
65
68
|
if (response.message.statusCode !== 200) {
|
|
66
69
|
throw new Error(`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${response.message.statusMessage}`);
|
|
67
70
|
}
|
|
71
|
+
const contentType = response.message.headers['content-type'] || '';
|
|
72
|
+
const mimeType = contentType.split(';', 1)[0].trim().toLowerCase();
|
|
73
|
+
// Check if the URL path ends with .zip (ignoring query parameters)
|
|
74
|
+
const urlPath = new URL(url).pathname.toLowerCase();
|
|
75
|
+
const urlEndsWithZip = urlPath.endsWith('.zip');
|
|
76
|
+
const isZip = mimeType === 'application/zip' ||
|
|
77
|
+
mimeType === 'application/x-zip-compressed' ||
|
|
78
|
+
mimeType === 'application/zip-compressed' ||
|
|
79
|
+
urlEndsWithZip;
|
|
80
|
+
// Extract filename from Content-Disposition header
|
|
81
|
+
const contentDisposition = response.message.headers['content-disposition'] || '';
|
|
82
|
+
let fileName = 'artifact';
|
|
83
|
+
const filenameMatch = contentDisposition.match(/filename\*?=['"]?(?:UTF-\d['"]*)?([^;\r\n"']*)['"]?/i);
|
|
84
|
+
if (filenameMatch && filenameMatch[1]) {
|
|
85
|
+
// Sanitize fileName to prevent path traversal attacks
|
|
86
|
+
// Use path.basename to extract only the filename component
|
|
87
|
+
fileName = path.basename(decodeURIComponent(filenameMatch[1].trim()));
|
|
88
|
+
}
|
|
89
|
+
core.debug(`Content-Type: ${contentType}, mimeType: ${mimeType}, urlEndsWithZip: ${urlEndsWithZip}, isZip: ${isZip}, skipDecompress: ${skipDecompress}`);
|
|
90
|
+
core.debug(`Content-Disposition: ${contentDisposition}, fileName: ${fileName}`);
|
|
68
91
|
let sha256Digest = undefined;
|
|
69
92
|
return new Promise((resolve, reject) => {
|
|
70
93
|
const timerFn = () => {
|
|
71
|
-
const timeoutError = new Error(`Blob storage chunk did not respond in ${
|
|
94
|
+
const timeoutError = new Error(`Blob storage chunk did not respond in ${timeout}ms`);
|
|
72
95
|
response.message.destroy(timeoutError);
|
|
73
96
|
reject(timeoutError);
|
|
74
97
|
};
|
|
75
|
-
const timer = setTimeout(timerFn,
|
|
76
|
-
const
|
|
77
|
-
const passThrough = new stream.PassThrough();
|
|
78
|
-
response.message.pipe(passThrough);
|
|
79
|
-
passThrough.pipe(hashStream);
|
|
80
|
-
const extractStream = passThrough;
|
|
81
|
-
extractStream
|
|
82
|
-
.on('data', () => {
|
|
83
|
-
timer.refresh();
|
|
84
|
-
})
|
|
85
|
-
.on('error', (error) => {
|
|
98
|
+
const timer = setTimeout(timerFn, timeout);
|
|
99
|
+
const onError = (error) => {
|
|
86
100
|
core.debug(`response.message: Artifact download failed: ${error.message}`);
|
|
87
101
|
clearTimeout(timer);
|
|
88
102
|
reject(error);
|
|
103
|
+
};
|
|
104
|
+
const hashStream = crypto.createHash('sha256').setEncoding('hex');
|
|
105
|
+
const passThrough = new stream.PassThrough()
|
|
106
|
+
.on('data', () => {
|
|
107
|
+
timer.refresh();
|
|
89
108
|
})
|
|
90
|
-
.
|
|
91
|
-
|
|
109
|
+
.on('error', onError);
|
|
110
|
+
response.message.pipe(passThrough);
|
|
111
|
+
passThrough.pipe(hashStream);
|
|
112
|
+
const onClose = () => {
|
|
92
113
|
clearTimeout(timer);
|
|
93
114
|
if (hashStream) {
|
|
94
115
|
hashStream.end();
|
|
@@ -96,10 +117,21 @@ export function streamExtractExternal(url_1, directory_1) {
|
|
|
96
117
|
core.info(`SHA256 digest of downloaded artifact is ${sha256Digest}`);
|
|
97
118
|
}
|
|
98
119
|
resolve({ sha256Digest: `sha256:${sha256Digest}` });
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
120
|
+
};
|
|
121
|
+
if (isZip && !skipDecompress) {
|
|
122
|
+
// Extract zip file
|
|
123
|
+
passThrough
|
|
124
|
+
.pipe(unzip.Extract({ path: directory }))
|
|
125
|
+
.on('close', onClose)
|
|
126
|
+
.on('error', onError);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// Save raw file without extracting
|
|
130
|
+
const filePath = path.join(directory, fileName);
|
|
131
|
+
const writeStream = fsSync.createWriteStream(filePath);
|
|
132
|
+
core.info(`Downloading raw file (non-zip) to: ${filePath}`);
|
|
133
|
+
passThrough.pipe(writeStream).on('close', onClose).on('error', onError);
|
|
134
|
+
}
|
|
103
135
|
});
|
|
104
136
|
});
|
|
105
137
|
}
|
|
@@ -128,7 +160,7 @@ export function downloadArtifactPublic(artifactId, repositoryOwner, repositoryNa
|
|
|
128
160
|
core.info(`Redirecting to blob download url: ${scrubQueryParameters(location)}`);
|
|
129
161
|
try {
|
|
130
162
|
core.info(`Starting download of artifact to: ${downloadPath}`);
|
|
131
|
-
const extractResponse = yield streamExtract(location, downloadPath);
|
|
163
|
+
const extractResponse = yield streamExtract(location, downloadPath, options === null || options === void 0 ? void 0 : options.skipDecompress);
|
|
132
164
|
core.info(`Artifact download completed successfully.`);
|
|
133
165
|
if (options === null || options === void 0 ? void 0 : options.expectedHash) {
|
|
134
166
|
if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) {
|
|
@@ -171,7 +203,7 @@ export function downloadArtifactInternal(artifactId, options) {
|
|
|
171
203
|
core.info(`Redirecting to blob download url: ${scrubQueryParameters(signedUrl)}`);
|
|
172
204
|
try {
|
|
173
205
|
core.info(`Starting download of artifact to: ${downloadPath}`);
|
|
174
|
-
const extractResponse = yield streamExtract(signedUrl, downloadPath);
|
|
206
|
+
const extractResponse = yield streamExtract(signedUrl, downloadPath, options === null || options === void 0 ? void 0 : options.skipDecompress);
|
|
175
207
|
core.info(`Artifact download completed successfully.`);
|
|
176
208
|
if (options === null || options === void 0 ? void 0 : options.expectedHash) {
|
|
177
209
|
if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-artifact.js","sourceRoot":"","sources":["../../../src/internal/download/download-artifact.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"download-artifact.js","sourceRoot":"","sources":["../../../src/internal/download/download-artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,11 @@ export interface DownloadArtifactOptions {
|
|
|
103
103
|
* matches the expected hash.
|
|
104
104
|
*/
|
|
105
105
|
expectedHash?: string;
|
|
106
|
+
/**
|
|
107
|
+
* If true, the downloaded artifact will not be automatically extracted/decompressed.
|
|
108
|
+
* The artifact will be saved as-is to the destination path.
|
|
109
|
+
*/
|
|
110
|
+
skipDecompress?: boolean;
|
|
106
111
|
}
|
|
107
112
|
export interface StreamExtractResponse {
|
|
108
113
|
/**
|