name: Lint on: push: branches: - main - rel-* pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' }} cancel-in-progress: true jobs: optional-lint: name: Optional Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: misspell # Check spellings as well uses: reviewdog/action-misspell@v1 with: github_token: ${{ secrets.github_token }} locale: "US" reporter: github-pr-check level: info filter_mode: diff_context - name: shellcheck # Static check shell scripts uses: reviewdog/action-shellcheck@v1 with: github_token: ${{ secrets.github_token }} reporter: github-pr-check level: info filter_mode: file lint-python-format: # Required workflow name: Python format runs-on: ["self-hosted", "1ES.Pool=onnxruntime-github-Ubuntu2204-AMD-CPU"] permissions: contents: read security-events: write steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: # Version range or exact version of Python to use, using SemVer's version range syntax. Reads from .python-version if unset. python-version: "3.10" - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt - name: Update PATH run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Install dependencies run: | set -e -x python -m pip install --user -r requirements-dev.txt python -m pip install --user lintrunner lintrunner-adapters lintrunner init - name: Run lintrunner on all files run: | set +e if ! lintrunner --force-color --all-files --tee-json=lint.json -v; then echo "" echo -e "\e[1m\e[36mYou can reproduce these results locally by using \`lintrunner\`. To set up lintrunner locally, see https://github.com/microsoft/onnxruntime/blob/main/docs/Coding_Conventions_and_Standards.md#linting .\e[0m" exit 1 fi - name: Produce SARIF if: always() run: | python -m lintrunner_adapters to-sarif lint.json lintrunner.sarif - name: Upload SARIF file if: always() continue-on-error: true uses: github/codeql-action/upload-sarif@v3 with: # Path to SARIF file relative to the root of the repository sarif_file: lintrunner.sarif category: lintrunner checkout_path: ${{ github.workspace }} lint-cpp: name: Optional Lint C++ runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Update PATH run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Install ninja run: python -m pip install --user --upgrade ninja - name: Generate compile_commands.json run: | python tools/ci_build/build.py \ --cmake_generator "Ninja" \ --build_dir build \ --update \ --cmake_extra_defines CMAKE_EXPORT_COMPILE_COMMANDS=ON - name: Generate ONNX protobuf files run: cmake --build build/Debug --config Debug --target onnx_proto - uses: reviewdog/action-cpplint@master continue-on-error: true with: github_token: ${{ secrets.github_token }} reporter: github-pr-check level: info flags: --linelength=120 --exclude=java/src/main/native/*.c --exclude=onnxruntime/core/mlas/inc/* --exclude=onnxruntime/core/mlas/lib/* --exclude=onnxruntime/contrib_ops/cuda/bert/flash_attention/* --exclude=build/Debug/* --exclude=cmake/* --exclude=csharp/test/* --exclude=onnxruntime/core/providers/dml/DmlExecutionProvider/src/Operators/GeneratedShaders/* --exclude=orttraining/orttraining/test/* --exclude=onnxruntime/test/* --exclude=winml/* filter: "-runtime/references" lint-js: name: Lint JavaScript runs-on: ["self-hosted", "1ES.Pool=onnxruntime-github-Ubuntu2204-AMD-CPU"] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 - uses: reviewdog/action-eslint@v1 with: reporter: github-pr-check level: error filter_mode: file eslint_flags: "--ext .ts --ext .tsx" workdir: "js/"