mirror of
https://github.com/github/codeql-action.git
synced 2025-12-06 07:48:17 +08:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
139 lines
5.0 KiB
YAML
Generated
139 lines
5.0 KiB
YAML
Generated
# Warning: This file is generated automatically, and should not be modified.
|
|
# Instead, please modify the template in the pr-checks directory and run:
|
|
# pr-checks/sync.sh
|
|
# to regenerate this file.
|
|
|
|
name: PR Check - Diagnostic export
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GO111MODULE: auto
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- releases/v*
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
- reopened
|
|
- ready_for_review
|
|
schedule:
|
|
- cron: '0 5 * * *'
|
|
workflow_dispatch:
|
|
inputs: {}
|
|
workflow_call:
|
|
inputs: {}
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
concurrency:
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
jobs:
|
|
diagnostics-export:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
version: linked
|
|
- os: ubuntu-latest
|
|
version: nightly-latest
|
|
name: Diagnostic export
|
|
if: github.triggering_actor != 'dependabot[bot]'
|
|
permissions:
|
|
contents: read
|
|
security-events: read
|
|
timeout-minutes: 45
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Check out repository
|
|
uses: actions/checkout@v6
|
|
- name: Prepare test
|
|
id: prepare-test
|
|
uses: ./.github/actions/prepare-test
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
use-all-platform-bundle: 'false'
|
|
setup-kotlin: 'true'
|
|
- uses: ./../action/init
|
|
id: init
|
|
with:
|
|
languages: javascript
|
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
- name: Add test diagnostics
|
|
env:
|
|
CODEQL_PATH: ${{ steps.init.outputs.codeql-path }}
|
|
run: |
|
|
"$CODEQL_PATH" database add-diagnostic \
|
|
"$RUNNER_TEMP/codeql_databases/javascript" \
|
|
--file-path /path/to/file \
|
|
--plaintext-message "Plaintext message" \
|
|
--source-id "lang/diagnostics/example" \
|
|
--source-name "Diagnostic name" \
|
|
--ready-for-status-page
|
|
- uses: ./../action/analyze
|
|
with:
|
|
output: ${{ runner.temp }}/results
|
|
upload-database: false
|
|
- name: Upload SARIF
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: diagnostics-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
|
path: ${{ runner.temp }}/results/javascript.sarif
|
|
retention-days: 7
|
|
- name: Check diagnostics appear in SARIF
|
|
uses: actions/github-script@v8
|
|
env:
|
|
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
|
|
function checkStatusPageNotification(n) {
|
|
const expectedMessage = 'Plaintext message';
|
|
if (n.message.text !== expectedMessage) {
|
|
core.setFailed(`Expected the status page diagnostic to have the message '${expectedMessage}', but found '${n.message.text}'.`);
|
|
}
|
|
if (n.locations.length !== 1) {
|
|
core.setFailed(`Expected the status page diagnostic to have exactly 1 location, but found ${n.locations.length}.`);
|
|
}
|
|
}
|
|
|
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
|
const run = sarif.runs[0];
|
|
|
|
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
|
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
|
n.descriptor.id === 'lang/diagnostics/example' && n.properties?.visibility?.statusPage
|
|
);
|
|
if (statusPageNotifications.length !== 1) {
|
|
core.setFailed(
|
|
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
|
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
|
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
|
`${JSON.stringify(toolExecutionNotifications)}.`
|
|
);
|
|
}
|
|
checkStatusPageNotification(statusPageNotifications[0]);
|
|
|
|
const notifications = run.tool.driver.notifications;
|
|
const diagnosticNotification = notifications.filter(n =>
|
|
n.id === 'lang/diagnostics/example' && n.name === 'lang/diagnostics/example' &&
|
|
n.fullDescription.text === 'Diagnostic name'
|
|
);
|
|
if (diagnosticNotification.length !== 1) {
|
|
core.setFailed(
|
|
'Expected exactly one notification for this diagnostic in the ' +
|
|
`'runs[].tool.driver.notifications[]' SARIF property, but found ` +
|
|
`${diagnosticNotification.length}. All notifications: ` +
|
|
`${JSON.stringify(notifications)}.`
|
|
);
|
|
}
|
|
|
|
core.info('Finished diagnostic export test');
|
|
env:
|
|
CODEQL_ACTION_EXPORT_DIAGNOSTICS: true
|
|
CODEQL_ACTION_TEST_MODE: true
|