110 lines
3.3 KiB
YAML
110 lines
3.3 KiB
YAML
name: Run CLI tests
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '0 0 * * *'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, ready_for_review]
|
|
paths:
|
|
- extensions/ql-vscode/src/codeql-cli/**
|
|
- extensions/ql-vscode/src/language-support/**
|
|
- extensions/ql-vscode/src/query-server/**
|
|
|
|
jobs:
|
|
find-nightly:
|
|
name: Find Nightly Release
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
url: ${{ steps.get-url.outputs.nightly-url }}
|
|
steps:
|
|
- name: Get Nightly Release URL
|
|
id: get-url
|
|
env:
|
|
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
|
shell: bash
|
|
# This workflow step gets an unstable testing version of the CodeQL CLI. It should not be used outside of these tests.
|
|
run: |
|
|
LATEST=`gh api repos/dsp-testing/codeql-cli-nightlies/releases --jq '.[].tag_name' --method GET --raw-field 'per_page=1'`
|
|
echo "nightly-url=https://github.com/dsp-testing/codeql-cli-nightlies/releases/download/$LATEST" >> "$GITHUB_OUTPUT"
|
|
|
|
set-matrix:
|
|
name: Set Matrix for cli-test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
- name: Set the variables
|
|
id: set-variables
|
|
run: echo "cli-versions=$(cat ./extensions/ql-vscode/supported_cli_versions.json | jq -rc)" >> $GITHUB_OUTPUT
|
|
outputs:
|
|
cli-versions: ${{ steps.set-variables.outputs.cli-versions }}
|
|
|
|
cli-test:
|
|
name: CLI Test
|
|
runs-on: ${{ matrix.os }}
|
|
needs: [find-nightly, set-matrix]
|
|
timeout-minutes: 30
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
version: ${{ fromJson(needs.set-matrix.outputs.cli-versions) }}
|
|
fail-fast: false
|
|
env:
|
|
CLI_VERSION: ${{ matrix.version }}
|
|
NIGHTLY_URL: ${{ needs.find-nightly.outputs.url }}
|
|
TEST_CODEQL_PATH: '${{ github.workspace }}/codeql'
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '16.17.1'
|
|
cache: 'npm'
|
|
cache-dependency-path: extensions/ql-vscode/package-lock.json
|
|
|
|
- name: Install dependencies
|
|
working-directory: extensions/ql-vscode
|
|
run: |
|
|
npm ci
|
|
shell: bash
|
|
|
|
- name: Build
|
|
working-directory: extensions/ql-vscode
|
|
run: |
|
|
npm run build
|
|
shell: bash
|
|
|
|
- name: Decide on ref of CodeQL repo
|
|
id: choose-ref
|
|
shell: bash
|
|
run: |
|
|
if [[ "${{ matrix.version }}" == "nightly" ]]
|
|
then
|
|
REF="codeql-cli/latest"
|
|
else
|
|
REF="codeql-cli/${{ matrix.version }}"
|
|
fi
|
|
echo "ref=$REF" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Checkout QL
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: github/codeql
|
|
ref: ${{ steps.choose-ref.outputs.ref }}
|
|
path: codeql
|
|
|
|
- name: Run CLI tests (Linux)
|
|
working-directory: extensions/ql-vscode
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: |
|
|
unset DBUS_SESSION_BUS_ADDRESS
|
|
/usr/bin/xvfb-run npm run test:cli-integration
|
|
|
|
- name: Run CLI tests (Windows)
|
|
working-directory: extensions/ql-vscode
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
npm run test:cli-integration
|