greenc-FNAL checking Python code #21
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Python Check | |
| run-name: "${{ github.actor }} checking Python code" | |
| on: | |
| pull_request: | |
| branches: [ main ] | |
| workflow_dispatch: | |
| jobs: | |
| detect-python-changes: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| outputs: | |
| has_changes: ${{ steps.filter.outputs.matched }} | |
| changed_files: ${{ steps.filter.outputs.matched_files }} | |
| is_act: ${{ steps.detect_act.outputs.is_act }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| fetch-depth: 0 | |
| path: phlex-src | |
| - name: Detect act environment | |
| id: detect_act | |
| uses: ./phlex-src/.github/actions/detect-act-env | |
| - name: Detect Python changes | |
| id: filter | |
| uses: Framework-R-D/phlex/.github/actions/detect-relevant-changes@main | |
| with: | |
| repo-path: phlex-src | |
| base-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }} | |
| head-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
| file-type: python | |
| - name: Report detection outcome | |
| run: | | |
| if [ "${{ steps.filter.outputs.matched }}" != "true" ]; then | |
| echo "::notice::No python check relevant changes detected; workflow will be skipped." | |
| else | |
| echo "::group::Python check relevant files" | |
| printf '%s\n' "${{ steps.filter.outputs.matched_files }}" | |
| echo "::endgroup::" | |
| fi | |
| python-check: | |
| needs: detect-python-changes | |
| if: ${{ (needs.detect-python-changes.outputs.has_changes == 'true') || (github.event_name == 'workflow_dispatch') || (needs.detect-python-changes.outputs.is_act == 'true') }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| container: | |
| image: ghcr.io/framework-r-d/phlex-ci:latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| path: phlex-src | |
| - name: Run ruff and mypy checks | |
| working-directory: phlex-src | |
| env: | |
| FORCE_COLOR: 1 # `ruff`/`colored` crate | |
| run: | | |
| . /entrypoint.sh | |
| failed=0 | |
| echo "➡️ Checking Python code with ruff..." | |
| echo "::group::Running ruff check" | |
| if ! ruff check; then | |
| failed=1 | |
| echo "::endgroup::" | |
| echo "❌ Ruff check failed." | |
| else | |
| echo "::endgroup::" | |
| echo "✅ Ruff check passed." | |
| fi | |
| echo "➡️ Checking Python code with mypy..." | |
| echo "::group::Running mypy" | |
| if ! mypy --color-output .; then | |
| failed=1 | |
| echo "::endgroup::" | |
| echo "❌ MyPy check failed." | |
| else | |
| echo "::endgroup::" | |
| echo "✅ MyPy check passed." | |
| fi | |
| exit $failed | |
| python-check-skipped: | |
| needs: detect-python-changes | |
| if: ${{ (needs.detect-python-changes.outputs.has_changes != 'true') && (github.event_name != 'workflow_dispatch') && (needs.detect-python-changes.outputs.is_act != 'true') }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: No relevant Python changes detected | |
| run: echo "No Python relevant changes detected; check skipped." |