Skip to content

Commit

Permalink
✨ add an option to upload cache only for the default branch
Browse files Browse the repository at this point in the history
  • Loading branch information
nik.volkov authored and tiulpin committed Nov 30, 2022
1 parent a2e39fd commit 497ab95
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 7 deletions.
4 changes: 4 additions & 0 deletions action.yaml
Expand Up @@ -25,6 +25,10 @@ inputs:
description: 'Pass additional cache hash extension'
required: false
default: "${{ github.sha }}"
cache-default-branch-only:
description: 'Upload cache for default branch only'
required: false
default: "false"
upload-result:
description: 'Upload Qodana results as an artifact to the job'
required: false
Expand Down
1 change: 1 addition & 0 deletions common/qodana.ts
Expand Up @@ -30,6 +30,7 @@ export interface Inputs {
resultsDir: string
cacheDir: string
additionalCacheHash: string
cacheDefaultBranchOnly: boolean
uploadResult: boolean
artifactName: string
useCaches: boolean
Expand Down
1 change: 1 addition & 0 deletions scan/__tests__/main.test.ts
Expand Up @@ -53,6 +53,7 @@ function inputsDefaultFixture(): Inputs {
resultsDir: '${{ runner.temp }}/qodana-results',
cacheDir: '${{ runner.temp }}/qodana-caches',
additionalCacheHash: '',
cacheDefaultBranchOnly: false,
uploadResult: true,
artifactName: 'Qodana report',
useCaches: true,
Expand Down
20 changes: 18 additions & 2 deletions scan/dist/index.js
Expand Up @@ -72345,7 +72345,7 @@ var require_utils7 = __commonJS({
return mod && mod.__esModule ? mod : { "default": mod };
};
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.isServer = exports2.restoreCaches = exports2.uploadCaches = exports2.uploadReport = exports2.prepareAgent = exports2.qodana = exports2.getInputs = void 0;
exports2.isNeedToUploadCache = exports2.isServer = exports2.restoreCaches = exports2.uploadCaches = exports2.uploadReport = exports2.prepareAgent = exports2.qodana = exports2.getInputs = void 0;
var artifact = __importStar2(require_artifact_client2());
var cache = __importStar2(require_cache());
var core2 = __importStar2(require_core());
Expand All @@ -72361,6 +72361,7 @@ var require_utils7 = __commonJS({
resultsDir: core2.getInput("results-dir"),
cacheDir: core2.getInput("cache-dir"),
additionalCacheHash: core2.getInput("additional-cache-hash"),
cacheDefaultBranchOnly: core2.getBooleanInput("cache-default-branch-only"),
uploadResult: core2.getBooleanInput("upload-result"),
artifactName: core2.getInput("artifact-name"),
useCaches: core2.getBooleanInput("use-caches"),
Expand Down Expand Up @@ -72485,6 +72486,20 @@ var require_utils7 = __commonJS({
}
__name(isServer, "isServer");
exports2.isServer = isServer;
function isNeedToUploadCache(useCaches, cacheDefaultBranchOnly) {
var _a;
if (!useCaches && cacheDefaultBranchOnly) {
core2.warning('Turn on "use-cache" option to use "cache-default-branch-only"');
}
if (useCaches && cacheDefaultBranchOnly) {
const currentBranch = github.context.payload.ref;
const defaultBranch = (_a = github.context.payload.repository) === null || _a === void 0 ? void 0 : _a.default_branch;
return currentBranch === defaultBranch;
}
return useCaches;
}
__name(isNeedToUploadCache, "isNeedToUploadCache");
exports2.isNeedToUploadCache = isNeedToUploadCache;
}
});

Expand Down Expand Up @@ -72784,9 +72799,10 @@ function main() {
(0, utils_1.restoreCaches)(inputs.cacheDir, inputs.additionalCacheHash, inputs.useCaches)
]);
const exitCode = yield (0, utils_1.qodana)();
const canUploadCache = (0, utils_1.isNeedToUploadCache)(inputs.useCaches, inputs.cacheDefaultBranchOnly) && (0, qodana_1.isExecutionSuccessful)(exitCode);
yield Promise.all([
(0, utils_1.uploadReport)(inputs.resultsDir, inputs.artifactName, inputs.uploadResult),
(0, utils_1.uploadCaches)(inputs.cacheDir, inputs.additionalCacheHash, inputs.useCaches && (0, qodana_1.isExecutionSuccessful)(exitCode)),
(0, utils_1.uploadCaches)(inputs.cacheDir, inputs.additionalCacheHash, canUploadCache),
(0, output_1.publishOutput)(exitCode === qodana_1.QodanaExitCode.FailThreshold, `${inputs.resultsDir}/${qodana_1.QODANA_SARIF_NAME}`, `${inputs.resultsDir}/${qodana_1.QODANA_SHORT_SARIF_NAME}`, (0, qodana_1.isExecutionSuccessful)(exitCode), inputs.useAnnotations)
]);
if (!(0, qodana_1.isExecutionSuccessful)(exitCode)) {
Expand Down
11 changes: 6 additions & 5 deletions scan/src/main.ts
Expand Up @@ -9,6 +9,7 @@ import {
} from '../../common/qodana'
import {
getInputs,
isNeedToUploadCache,
prepareAgent,
qodana,
restoreCaches,
Expand Down Expand Up @@ -51,13 +52,13 @@ async function main(): Promise<void> {
)
])
const exitCode = await qodana()
const canUploadCache =
isNeedToUploadCache(inputs.useCaches, inputs.cacheDefaultBranchOnly) &&
isExecutionSuccessful(exitCode)

await Promise.all([
uploadReport(inputs.resultsDir, inputs.artifactName, inputs.uploadResult),
uploadCaches(
inputs.cacheDir,
inputs.additionalCacheHash,
inputs.useCaches && isExecutionSuccessful(exitCode)
),
uploadCaches(inputs.cacheDir, inputs.additionalCacheHash, canUploadCache),
publishOutput(
exitCode === QodanaExitCode.FailThreshold,
`${inputs.resultsDir}/${QODANA_SARIF_NAME}`,
Expand Down
24 changes: 24 additions & 0 deletions scan/src/utils.ts
Expand Up @@ -28,6 +28,7 @@ export function getInputs(): Inputs {
resultsDir: core.getInput('results-dir'),
cacheDir: core.getInput('cache-dir'),
additionalCacheHash: core.getInput('additional-cache-hash'),
cacheDefaultBranchOnly: core.getBooleanInput('cache-default-branch-only'),
uploadResult: core.getBooleanInput('upload-result'),
artifactName: core.getInput('artifact-name'),
useCaches: core.getBooleanInput('use-caches'),
Expand Down Expand Up @@ -204,3 +205,26 @@ export function isServer(): boolean {
)
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
}

/**
* Check if need to upload the cache.
*/
export function isNeedToUploadCache(
useCaches: boolean,
cacheDefaultBranchOnly: boolean
): boolean {
if (!useCaches && cacheDefaultBranchOnly) {
core.warning(
'Turn on "use-cache" option to use "cache-default-branch-only"'
)
}

if (useCaches && cacheDefaultBranchOnly) {
const currentBranch = github.context.payload.ref
const defaultBranch = github.context.payload.repository?.default_branch

return currentBranch === defaultBranch
}

return useCaches
}
1 change: 1 addition & 0 deletions vsts/QodanaScan/index.js
Expand Up @@ -4367,6 +4367,7 @@ var require_utils2 = __commonJS({
additionalCacheHash: "",
useAnnotations: false,
useCaches: false,
cacheDefaultBranchOnly: false,
prMode: false
};
}
Expand Down
1 change: 1 addition & 0 deletions vsts/src/utils.ts
Expand Up @@ -34,6 +34,7 @@ export function getInputs(): Inputs {
additionalCacheHash: '',
useAnnotations: false,
useCaches: false,
cacheDefaultBranchOnly: false,
prMode: false
}
}
Expand Down

0 comments on commit 497ab95

Please sign in to comment.