mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 09:40:17 +08:00
69 lines
2.4 KiB
YAML
69 lines
2.4 KiB
YAML
name: "Bundle: Zstandard checks"
|
|
description: "A Zstandard CodeQL bundle should be extracted on supported operating systems"
|
|
versions:
|
|
- linked
|
|
operatingSystems:
|
|
- macos
|
|
- ubuntu
|
|
- windows
|
|
steps:
|
|
- name: Remove CodeQL from toolcache
|
|
uses: actions/github-script@v8
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const codeqlPath = path.join(process.env['RUNNER_TOOL_CACHE'], 'CodeQL');
|
|
if (codeqlPath !== undefined) {
|
|
fs.rmdirSync(codeqlPath, { recursive: true });
|
|
}
|
|
- id: init
|
|
uses: ./../action/init
|
|
with:
|
|
languages: javascript
|
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
- uses: ./../action/analyze
|
|
with:
|
|
output: ${{ runner.temp }}/results
|
|
upload-database: false
|
|
- name: Upload SARIF
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.os }}-zstd-bundle.sarif
|
|
path: ${{ runner.temp }}/results/javascript.sarif
|
|
retention-days: 7
|
|
- name: Check diagnostic with expected tools URL appears in SARIF
|
|
uses: actions/github-script@v8
|
|
env:
|
|
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
|
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
|
const run = sarif.runs[0];
|
|
|
|
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
|
const downloadTelemetryNotifications = toolExecutionNotifications.filter(n =>
|
|
n.descriptor.id === 'codeql-action/bundle-download-telemetry'
|
|
);
|
|
if (downloadTelemetryNotifications.length !== 1) {
|
|
core.setFailed(
|
|
'Expected exactly one reporting descriptor in the ' +
|
|
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
|
`${downloadTelemetryNotifications.length}. All notification reporting descriptors: ` +
|
|
`${JSON.stringify(toolExecutionNotifications)}.`
|
|
);
|
|
}
|
|
|
|
const toolsUrl = downloadTelemetryNotifications[0].properties.attributes.toolsUrl;
|
|
console.log(`Found tools URL: ${toolsUrl}`);
|
|
|
|
const expectedExtension = process.env['RUNNER_OS'] === 'Windows' ? '.tar.gz' : '.tar.zst';
|
|
|
|
if (!toolsUrl.endsWith(expectedExtension)) {
|
|
core.setFailed(
|
|
`Expected the tools URL to be a ${expectedExtension} file, but found ${toolsUrl}.`
|
|
);
|
|
}
|