Skip to content

Commit

Permalink
Check telemetry in PR check to ensure .tar.zst downloaded
Browse files Browse the repository at this point in the history
  • Loading branch information
henrymercer committed Sep 23, 2024
1 parent a7a6a69 commit 662c71a
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 1 deletion.
44 changes: 44 additions & 0 deletions .github/workflows/__zstd-bundle.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 45 additions & 1 deletion pr-checks/checks/zstd-bundle.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
name: "Zstandard bundle"
description: "Tests using a CodeQL Bundle compressed using Zstandard"
description: "Tests the feature flag that downloads a Zstandard-compressed CodeQL Bundle by default"
versions:
- linked
operatingSystems:
- ubuntu
env:
CODEQL_ACTION_ZSTD_BUNDLE: true
steps:
- name: Remove CodeQL from toolcache
run: |
rm -rf $RUNNER_TOOL_CACHE/CodeQL
- id: init
uses: ./../action/init
with:
Expand All @@ -17,3 +20,44 @@ steps:
shell: bash
run: ./build.sh
- uses: ./../action/analyze
with:
output: ${{ runner.temp }}/results
upload-database: false
- name: Upload SARIF
uses: actions/upload-artifact@v3
with:
name: zstd-bundle.sarif
path: ${{ runner.temp }}/results/cpp.sarif
retention-days: 7
- name: Check diagnostic with expected tools URL appears in SARIF
uses: actions/github-script@v7
env:
SARIF_PATH: ${{ runner.temp }}/results/cpp.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}`);
if (!toolsUrl.endsWith('.tar.zst')) {
core.setFailed(
`Expected the tools URL to be a .tar.zst file, but found ${toolsUrl}.`
);
}

0 comments on commit 662c71a

Please sign in to comment.