Merge pull request #438 from JojOatXGME/fix-artifact-download-alternative

Fix problematic retransmission of authentication token (alternative solution) #438
This commit is contained in:
Jozef Izso 2024-05-08 12:06:22 +02:00 committed by GitHub
commit ed2a32e11c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 40 deletions

23
dist/index.js generated vendored
View file

@ -2153,26 +2153,11 @@ function downloadArtifact(octokit, artifactId, fileName, token) {
const headers = {
Authorization: `Bearer ${token}`
};
const resp = yield (0, got_1.default)(req.url, {
headers,
followRedirect: false
});
core.info(`Fetch artifact URL: ${resp.statusCode} ${resp.statusMessage}`);
if (resp.statusCode !== 302) {
throw new Error('Fetch artifact URL failed: received unexpected status code');
}
const url = resp.headers.location;
if (url === undefined) {
const receivedHeaders = Object.keys(resp.headers);
core.info(`Received headers: ${receivedHeaders.join(', ')}`);
throw new Error('Location header was not found in API response');
}
if (typeof url !== 'string') {
throw new Error(`Location header has unexpected value: ${url}`);
}
const downloadStream = got_1.default.stream(url, { headers });
const downloadStream = got_1.default.stream(req.url, { headers });
const fileWriterStream = (0, fs_1.createWriteStream)(fileName);
core.info(`Downloading ${url}`);
downloadStream.on('redirect', response => {
core.info(`Downloading ${response.headers.location}`);
});
downloadStream.on('downloadProgress', ({ transferred }) => {
core.info(`Progress: ${transferred} B`);
});

View file

@ -50,33 +50,17 @@ export async function downloadArtifact(
const headers = {
Authorization: `Bearer ${token}`
}
const resp = await got(req.url, {
headers,
followRedirect: false
})
core.info(`Fetch artifact URL: ${resp.statusCode} ${resp.statusMessage}`)
if (resp.statusCode !== 302) {
throw new Error('Fetch artifact URL failed: received unexpected status code')
}
const url = resp.headers.location
if (url === undefined) {
const receivedHeaders = Object.keys(resp.headers)
core.info(`Received headers: ${receivedHeaders.join(', ')}`)
throw new Error('Location header was not found in API response')
}
if (typeof url !== 'string') {
throw new Error(`Location header has unexpected value: ${url}`)
}
const downloadStream = got.stream(url, {headers})
const downloadStream = got.stream(req.url, {headers})
const fileWriterStream = createWriteStream(fileName)
core.info(`Downloading ${url}`)
downloadStream.on('redirect', response => {
core.info(`Downloading ${response.headers.location}`)
})
downloadStream.on('downloadProgress', ({transferred}) => {
core.info(`Progress: ${transferred} B`)
})
await asyncStream(downloadStream, fileWriterStream)
} finally {
core.endGroup()