GitHub Action
Sourcery Action
Run Sourcery as a GitHub Action that you can easily add to your Continuous Integration.
This action performs the following operations:
- Installs Sourcery on your worker machine
- Logs in to Sourcery using your access token
- Reviews your code
Note: the Sourcery GitHub Action is FREE for open-source projects.
Note: for private repositories, a TEAM subscription is required. Check out our pricing page to sign up.
To run Sourcery over your entire codebase whenever a push is done to the main
branch:
name: Check codebase using Sourcery
on:
push:
branches: [main]
jobs:
review-with-sourcery:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
We recommend you store your Sourcery token as a
GitHub secret on
your repository. In the example above, that secret was stored as SOURCERY_TOKEN
.
You can retrieve your Sourcery token from your dashboard.
To run Sourcery only on the changed code in a PR:
name: Check PR using Sourcery
on: pull_request
jobs:
review-with-sourcery:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: '3.10'
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
diff_ref: ${{ github.event.pull_request.base.sha }}
Note here that we pass the fetch-depth: 0
option to
actions/checkout@v3
. This is necessary because
Sourcery needs access to both the current branch and the main branch in order to compute
diffs.
Type: string
CLI equivalent:
--token <token>
A Sourcery token. You can retrieve yours at the Sourcery dashboard.
We recommend you to store your token as a GitHub secret.
Type: string
Default:
.
CLI equivalent:
--target <target>
File(s) or directory(ies) for Sourcery to review.
This defaults to "."
, meaning that Sourcery will review your entire project.
To review only the directories dir1/
and dir2/
along with the files file1.py
and
file2.py
, pass them as space-separated strings:
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
target: dir1 dir2 file1.py file2.py
Type: string
Default: The latest Sourcery version available
CLI equivalent: None
The Sourcery CLI version to use.
This defaults to the latest version available.
To choose a specific version (let's say v1.5.0
):
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
version: 1.5.0
We recommend you not to this option unless strictly necessary. Pinning a Sourcery version may leave you out from the awesome features we are working on - as well as bugfixes ;)
Type: either
true
orfalse
Default:
true
CLI equivalent:
--verbose
Enable or disable Sourcery's verbose output.
Type: either
true
orfalse
Default:
true
CLI equivalent:
--check
Whether Sourcery should return an error code or not if issues are found in the code.
This defaults to true
, and hence the Sourcery CI step will fail in case Sourcery finds
issues in your code. You can pass false
to prevent that behavior.
Type: either
true
orfalse
Default:
false
CLI equivalent:
--fix
Whether Sourcery should automatically fix and modify the reviewed files in-place or not.
Type: string
Default: None
CLI equivalent:
--config <config-path>
Path to a valid Sourcery configuration file.
By default, this searches the current directory and its parents for a .sourcery.yaml
file.
To use a configuration file located elsewhere (for instance, at
config_files/.my-team-rules.yaml
):
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
config: config_files/.my-team-rules.yaml
Type: string
Default: None
CLI equivalent:
--diff="git diff <diff_ref>"
A reference to compute a git diff
.
This is not used by default. In this case, Sourcery will run over the entire
target
files.
To run Sourcery only on the changed lines in a PR, use:
- uses: sourcery-ai/action@v1
with:
token: ${{ secrets.SOURCERY_TOKEN }}
diff_ref: ${{ github.event.pull_request.base.sha }}