mirror of
https://github.com/github/codeql.git
synced 2026-04-15 03:54:02 +02:00
122 lines
3.8 KiB
YAML
122 lines
3.8 KiB
YAML
name: "Swift"
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- "swift/**"
|
|
- "misc/bazel/**"
|
|
- "*.bazel*"
|
|
- .github/workflows/swift.yml
|
|
- .github/actions/fetch-codeql/action.yml
|
|
- codeql-workspace.yml
|
|
- .pre-commit-config.yaml
|
|
- "!**/*.md"
|
|
- "!**/*.qhelp"
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
changes:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
codegen: ${{ steps.filter.outputs.codegen }}
|
|
ql: ${{ steps.filter.outputs.ql }}
|
|
steps:
|
|
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
codegen:
|
|
- 'github/workflows/swift.yml'
|
|
- "misc/bazel/**"
|
|
- "*.bazel*"
|
|
- 'swift/actions/setup-env/**'
|
|
- '.pre-commit-config.yaml'
|
|
- 'swift/codegen/**'
|
|
- 'swift/schema.py'
|
|
- 'swift/**/*.dbscheme'
|
|
- 'swift/ql/lib/codeql/swift/elements.qll'
|
|
- 'swift/ql/lib/codeql/swift/elements/**'
|
|
- 'swift/ql/lib/codeql/swift/generated/**'
|
|
- 'swift/ql/test/extractor-tests/generated/**'
|
|
ql:
|
|
- 'github/workflows/swift.yml'
|
|
- 'swift/**/*.ql'
|
|
- 'swift/**/*.qll'
|
|
# not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks
|
|
# without waiting for the macOS build
|
|
build-and-test-macos:
|
|
runs-on: macos-12-xl
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/create-extractor-pack
|
|
- uses: ./swift/actions/run-quick-tests
|
|
build-and-test-linux:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/create-extractor-pack
|
|
- uses: ./swift/actions/run-quick-tests
|
|
qltests-linux:
|
|
needs: build-and-test-linux
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/run-ql-tests
|
|
qltests-macos:
|
|
needs: build-and-test-macos
|
|
runs-on: macos-12-xl
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
slice: ["1/2", "2/2"]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/run-ql-tests
|
|
with:
|
|
flags: --slice ${{ matrix.slice }}
|
|
integration-tests-linux:
|
|
needs: build-and-test-linux
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/run-integration-tests
|
|
integration-tests-macos:
|
|
needs: build-and-test-macos
|
|
runs-on: macos-12-xl
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/run-integration-tests
|
|
codegen:
|
|
runs-on: ubuntu-latest
|
|
needs: changes
|
|
if: ${{ needs.changes.outputs.codegen == 'true' }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./swift/actions/setup-env
|
|
- uses: pre-commit/action@v3.0.0
|
|
name: Check that python code is properly formatted
|
|
with:
|
|
extra_args: autopep8 --all-files
|
|
- uses: ./.github/actions/fetch-codeql
|
|
- uses: pre-commit/action@v3.0.0
|
|
name: Check that QL generated code was checked in
|
|
with:
|
|
extra_args: swift-codegen --all-files
|
|
- name: Generate C++ files
|
|
run: |
|
|
bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/generated-cpp-files
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: swift-generated-cpp-files
|
|
path: swift/generated-cpp-files/**
|
|
qlformat:
|
|
runs-on: ubuntu-latest
|
|
needs: changes
|
|
if: ${{ needs.changes.outputs.ql == 'true' }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/actions/fetch-codeql
|
|
- name: Check QL formatting
|
|
run: find swift/ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 codeql query format --check-only
|