diff --git a/.github/actions/python/action.yml b/.github/actions/python/action.yml new file mode 100644 index 0000000..5a583d1 --- /dev/null +++ b/.github/actions/python/action.yml @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 + +name: "Setup Python" + +description: "Composite action to setup Python" + +inputs: + python-version: + description: "Python version" + default: "3.11" + python-packages: + description: "Python packages to install" + default: "--help" + required: true + +outputs: + install-outcome: + description: "Outcome of install step" + value: ${{ steps.install.outcome }} + +runs: + using: "composite" + steps: + - name: "Harden Runner" + uses: step-security/harden-runner@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.0 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - name: "Checkout" + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + with: + fetch-depth: 0 + + - name: "Setup Python ${{ inputs.python-version }}" + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + with: + python-version: ${{ inputs.python-version }} + + - name: "Install ${{ inputs.python-packages }}" + id: install + shell: bash + run: | + python -m pip install --upgrade pip + python -m pip install ${{ inputs.python-packages }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9ed76a5..7829f13 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -39,59 +39,45 @@ jobs: lint: runs-on: ubuntu-latest steps: - - name: "Harden Runner" - uses: step-security/harden-runner@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.0 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: "Checkout" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - with: - fetch-depth: 0 - - - name: "Setup Python" - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - name: "Setup tox" + id: python + uses: ./.github/actions/python with: python-version: "3.11" - - - name: "Install tox" - id: tox - run: | - python -m pip install --upgrade pip - python -m pip install tox + python-packages: "tox" - name: "JSON schema validation" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | # shellcheck disable=SC2046 tox -e jsonschema -- $(find src/instructlab/schema/v* -name "*.json") - name: "Ruff" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | tox -e ruff -- check env: RUFF_OUTPUT_FORMAT: github - name: "Pylint" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | echo "::add-matcher::.github/workflows/matchers/pylint.json" tox -e lint - name: "Remove Pylint matchers" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | echo "::remove-matcher owner=pylint-error::" echo "::remove-matcher owner=pylint-warning::" - name: "mypy" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | echo "::add-matcher::.github/workflows/matchers/mypy.json" tox -e mypy - name: "Remove mypy matchers" - if: ${{ !cancelled() && (steps.tox.outcome == 'success') }} + if: ${{ !cancelled() && (steps.python.outputs.install-outcome == 'success') }} run: | echo "::remove-matcher owner=mypy::"