2023-03-08 02:38:22 +03:00
## Integrating Pyright into Continuous Integration
2020-07-23 02:55:50 +03:00
2023-05-06 18:26:44 +03:00
### Adding Pyright badge to README.md
[![Checked with pyright ](https://microsoft.github.io/pyright/img/pyright_badge.svg )](https://microsoft.github.io/pyright/)
To add a “pyright: checked” SVG badge to your project’ s README.md file, use the following:
```text
[![Checked with pyright ](https://microsoft.github.io/pyright/img/pyright_badge.svg )](https://microsoft.github.io/pyright/)
```
2022-05-20 02:04:32 +03:00
### Running Pyright as a github action
2020-07-23 02:55:50 +03:00
2022-05-20 02:04:32 +03:00
You can configure pyright to run as a github action.
2020-08-29 05:46:48 +03:00
```yml
2022-05-20 01:34:10 +03:00
- uses: jakebailey/pyright-action@v1
with:
version: 1.1.xxx # Optional (if you want to pin the version)
2020-07-23 02:55:50 +03:00
```
2022-05-20 01:34:10 +03:00
Refer to the [pyright-action project ](https://github.com/jakebailey/pyright-action ) for more options.
2023-02-27 23:57:05 +03:00
### Running Pyright in gitlab (with code-quality review)
You can configure pyright to run in gitlab, and generate a compatible codequality report.
```yml
job_name:
before_script:
- npm i -g pyright
- npm i -g pyright-to-gitlab-ci
script:
- pyright < python source > --outputjson > report_raw.json
2023-06-09 17:37:45 +03:00
after_script:
2023-02-27 23:57:05 +03:00
- pyright-to-gitlab-ci --src report_raw.json --output report.json --base_path .
artifacts:
paths:
- report.json
reports:
codequality: report.json
```
Refer to the [pyright-to-gitlab-ci ](https://www.npmjs.com/package/pyright-to-gitlab-ci ) package for more details.
2022-05-20 02:04:32 +03:00
### Running Pyright as a pre-commit hook
2022-09-03 20:58:28 +03:00
You can run pyright as a pre-commit hook using the community-maintained [Python wrapper for pyright ](https://github.com/RobertCraigie/pyright-python ). For pre-commit configuration instructions, refer to [this documentation ](https://github.com/RobertCraigie/pyright-python#pre-commit ).
2022-05-20 01:34:10 +03:00
2020-07-23 02:55:50 +03:00
### Running Pyright from a CI script
2022-09-03 20:58:28 +03:00
You can run pyright from a bash script. Here's a sample script that installs the latest version of pyright and runs it.
2020-07-23 02:55:50 +03:00
2020-08-29 05:46:48 +03:00
```bash
2020-07-23 02:55:50 +03:00
#!/bin/bash
PATH_TO_PYRIGHT=`which pyright`
vercomp () {
if [[ $1 == $2 ]]
then
return 0
fi
local IFS=.
local i ver1=($1) ver2=($2)
# fill empty fields in ver1 with zeros
for ((i=${#ver1[@]}; i< ${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i< ${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
# fill empty fields in ver2 with zeros
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
return 1
fi
if ((10#${ver1[i]} < 10 # $ { ver2 [ i ] } ) )
then
return 2
fi
done
return 0
}
# Node version check
echo "Checking node version..."
NODE_VERSION=`node -v | cut -d'v' -f2`
MIN_NODE_VERSION="10.15.2"
vercomp $MIN_NODE_VERSION $NODE_VERSION
# 1 == gt
if [[ $? -eq 1 ]]; then
echo "Node version ${NODE_VERSION} too old, min expected is ${MIN_NODE_VERSION}, run:"
echo " npm -g upgrade node"
exit -1
fi
# Do we need to sudo?
echo "Checking node_modules dir..."
NODE_MODULES=`npm -g root`
SUDO="sudo"
if [ -w "$NODE_MODULES" ]; then
SUDO="" #nop
fi
# If we can't find pyright, install it.
echo "Checking pyright exists..."
if [ -z "$PATH_TO_PYRIGHT" ]; then
echo "...installing pyright"
${SUDO} npm install -g pyright
else
# already installed, upgrade to make sure it's current
# this avoids a sudo on launch if we're already current
echo "Checking pyright version..."
CURRENT=`pyright --version | cut -d' ' -f2`
REMOTE=`npm info pyright version`
if [ "$CURRENT" != "$REMOTE" ]; then
echo "...new version of pyright found, upgrading."
${SUDO} npm upgrade -g pyright
fi
fi
echo "done."
pyright -w
```