Workflow file for this run
This file contains 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: CI Pipeline | ||
on: | ||
pull_request: | ||
type: [ opened, synchronize ] | ||
push: | ||
branches: [ main ] | ||
env: | ||
WANDB_MODE: offline | ||
#SETUPTOOLS_ENABLE_FEATURES: legacy-editable | ||
jobs: | ||
pytest: | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
python-version: | ||
- "3.9" | ||
- "3.10" | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Get token from Github App | ||
uses: actions/create-github-app-token@v1 | ||
id: app_token | ||
with: | ||
app-id: ${{ secrets.APP_ID }} | ||
private-key: ${{ secrets.APP_PEM }} | ||
# owner is required, otherwise the creds will fail the checkout step | ||
owner: ${{ github.repository_owner }} | ||
- name: Checkout from GitHub | ||
uses: actions/checkout@v4 | ||
with: | ||
lfs: 'false' | ||
submodules: true | ||
ssh-key: ${{ secrets.git_ssh_key }} | ||
token: ${{ steps.app_token.outputs.token }} | ||
- name: Get changed files | ||
uses: dorny/paths-filter@v2 | ||
id: filter | ||
with: | ||
list-files: shell | ||
base: 'main' | ||
filters: | | ||
py_modified: | ||
- added|modified: "./**/*.py" | ||
- name: Setup Python | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
architecture: x64 | ||
cache: 'pip' | ||
- name: Setup Go | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: '1.18.4' | ||
- name: Install Python dependencies | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: pip install -e '.[modules, test]' | ||
- name: Install CUE | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: go install cuelang.org/go/cmd/cue@latest | ||
- name: Run pytest | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: coverage run -m py.test ./tests/unit | ||
- name: Send coverage repot to codecov | ||
uses: codecov/codecov-action@v3 | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
with: | ||
files: /home/runner/work/zetta_utils/zetta_utils/coverage.xml | ||
pylint-isort: | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
python-version: | ||
- "3.9" | ||
- "3.10" | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
lfs: 'false' | ||
submodules: 'recursive' | ||
ssh-key: ${{ secrets.git_ssh_key }} | ||
- name: Get changed files | ||
uses: dorny/paths-filter@v2 | ||
id: filter | ||
with: | ||
base: 'main' | ||
list-files: shell | ||
filters: | | ||
py_modified: | ||
- added|modified: "./**/*.py" | ||
- name: Setup Python | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
architecture: x64 | ||
cache: 'pip' | ||
- name: Install Python dependencies | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: pip install -e '.[modules, test]' | ||
- name: Run pylint | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: pylint ${{ steps.filter.outputs.py_modified_files }} | ||
- name: Run isort | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: isort --check-only --df --verbose --profile black . | ||
mypy: | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
python-version: | ||
- "3.9" | ||
- "3.10" | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
lfs: 'false' | ||
submodules: 'recursive' | ||
ssh-key: ${{ secrets.git_ssh_key }} | ||
- name: Get changed files | ||
uses: dorny/paths-filter@v2 | ||
id: filter | ||
with: | ||
list-files: shell | ||
base: 'main' | ||
filters: | | ||
py_modified: | ||
- added|modified: "./**/*.py" | ||
- name: Setup Python | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
architecture: x64 | ||
cache: 'pip' | ||
- name: Install Python dependencies | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: pip install -e '.[modules, test]' | ||
- name: Run mypy | ||
if: ${{ steps.filter.outputs.py_modified == 'true' }} | ||
run: mypy . | ||
test-docs: | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
python-version: | ||
- "3.9" | ||
- "3.10" | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
lfs: 'false' | ||
submodules: 'recursive' | ||
ssh-key: ${{ secrets.git_ssh_key }} | ||
- name: Get changed files | ||
uses: dorny/paths-filter@v2 | ||
id: filter | ||
with: | ||
list-files: shell | ||
base: 'main' | ||
filters: | | ||
docs_modified: | ||
- added|modified: "./**/*.rst" | ||
py_modified: | ||
- added|modified: "./**/*.py" | ||
- name: Setup Python | ||
if: ${{ steps.filter.outputs.docs_modified == 'true' || steps.filter.outputs.py_modified == 'true'}} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
architecture: x64 | ||
cache: 'pip' | ||
- name: Install Python dependencies | ||
if: ${{ steps.filter.outputs.docs_modified == 'true' || steps.filter.outputs.py_modified == 'true'}} | ||
run: pip install -e '.[modules, docs]' | ||
- name: Doctest | ||
if: ${{ steps.filter.outputs.docs_modified == 'true' || steps.filter.outputs.py_modified == 'true'}} | ||
run: make -C docs doctest | ||
- name: Build Docs | ||
if: ${{ steps.filter.outputs.docs_modified == 'true' || steps.filter.outputs.py_modified == 'true'}} | ||
run: make -C docs html | ||
all-checks-test: | ||
runs-on: ubuntu-20.04 | ||
needs: [mypy, pytest, pylint-isort, test-docs] | ||
if: always() | ||
steps: | ||
- name: Success | ||
if: ${{ !(contains(needs.*.result, 'failure')) }} | ||
run: exit 0 | ||
- name: Failure | ||
if: ${{ contains(needs.*.result, 'failure') }} | ||
run: exit 1 |