@actions/artifact
Version:
Actions artifact lib
83 lines • 3.43 kB
JavaScript
import os from 'os';
import { info } from '@actions/core';
// Used for controlling the highWaterMark value of the zip that is being streamed
// The same value is used as the chunk size that is use during upload to blob storage
export function getUploadChunkSize() {
return 8 * 1024 * 1024; // 8 MB Chunks
}
export function getRuntimeToken() {
const token = process.env['ACTIONS_RUNTIME_TOKEN'];
if (!token) {
throw new Error('Unable to get the ACTIONS_RUNTIME_TOKEN env variable');
}
return token;
}
export function getResultsServiceUrl() {
const resultsUrl = process.env['ACTIONS_RESULTS_URL'];
if (!resultsUrl) {
throw new Error('Unable to get the ACTIONS_RESULTS_URL env variable');
}
return new URL(resultsUrl).origin;
}
export function isGhes() {
const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com');
const hostname = ghUrl.hostname.trimEnd().toUpperCase();
const isGitHubHost = hostname === 'GITHUB.COM';
const isGheHost = hostname.endsWith('.GHE.COM');
const isLocalHost = hostname.endsWith('.LOCALHOST');
return !isGitHubHost && !isGheHost && !isLocalHost;
}
export function getGitHubWorkspaceDir() {
const ghWorkspaceDir = process.env['GITHUB_WORKSPACE'];
if (!ghWorkspaceDir) {
throw new Error('Unable to get the GITHUB_WORKSPACE env variable');
}
return ghWorkspaceDir;
}
// The maximum value of concurrency is 300.
// This value can be changed with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable.
export function getConcurrency() {
const numCPUs = os.cpus().length;
let concurrencyCap = 32;
if (numCPUs > 4) {
const concurrency = 16 * numCPUs;
concurrencyCap = concurrency > 300 ? 300 : concurrency;
}
const concurrencyOverride = process.env['ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY'];
if (concurrencyOverride) {
const concurrency = parseInt(concurrencyOverride);
if (isNaN(concurrency) || concurrency < 1) {
throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable');
}
if (concurrency < concurrencyCap) {
info(`Set concurrency based on the value set in ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY.`);
return concurrency;
}
info(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Set it to the maximum value allowed.`);
return concurrencyCap;
}
// default concurrency to 5
return 5;
}
export function getUploadChunkTimeout() {
const timeoutVar = process.env['ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS'];
if (!timeoutVar) {
return 300000; // 5 minutes
}
const timeout = parseInt(timeoutVar);
if (isNaN(timeout)) {
throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS env variable');
}
return timeout;
}
// This value can be changed with ACTIONS_ARTIFACT_MAX_ARTIFACT_COUNT variable.
// Defaults to 1000 as a safeguard for rate limiting.
export function getMaxArtifactListCount() {
const maxCountVar = process.env['ACTIONS_ARTIFACT_MAX_ARTIFACT_COUNT'] || '1000';
const maxCount = parseInt(maxCountVar);
if (isNaN(maxCount) || maxCount < 1) {
throw new Error('Invalid value set for ACTIONS_ARTIFACT_MAX_ARTIFACT_COUNT env variable');
}
return maxCount;
}
//# sourceMappingURL=config.js.map