Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Improve GitHub action #192

Merged
merged 12 commits into from
Apr 16, 2024
104 changes: 96 additions & 8 deletions .github/workflows/lint-and-format.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,107 @@
name: Lint and format APIs and SDKs
run-name: ${{ github.actor }} is linting and formatting the code

on: [push, pull_request]

jobs:
Lint-And-Format-APIs-And-SDKs:
Lint-And-Format:
runs-on: ubuntu-latest

strategy:
matrix:
directory: [agents-api, model-serving, sdks/python]

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: "3.10"

- name: Install and configure Poetry
uses: snok/install-poetry@v1
- name: Lint and format Agents API
run: cd agents-api && poetry install && poetry run poe check
- name: Lint and format Models API
run: cd model-serving && poetry install && poetry run poe check
- name: Lint and format Python SDK
run: cd sdks/python && poetry install && poetry run poe check

- name: Configure Poetry to use .venv
run: |
cd ${{ matrix.directory }}
poetry config virtualenvs.in-project true

- name: Cache Poetry virtualenv
uses: actions/cache@v3
with:
path: ${{ matrix.directory }}/.venv
key: ${{ runner.os }}-poetry-${{ matrix.directory }}-${{ hashFiles(format('{0}/poetry.lock', matrix.directory)) }}
restore-keys: |
${{ runner.os }}-poetry-${{ matrix.directory }}-

- name: Cache pytype
creatorrr marked this conversation as resolved.
Show resolved Hide resolved
uses: actions/cache@v3
with:
path: ${{ matrix.directory }}/.pytype
key: ${{ runner.os }}-pytype-${{ matrix.directory }}-${{ hashFiles(format('{0}/**/*.py', matrix.directory)) }}
restore-keys: |
${{ runner.os }}-pytype-${{ matrix.directory }}-

- name: Install dependencies
run: |
cd ${{ matrix.directory }}
poetry install

- name: Lint and format
run: |
cd ${{ matrix.directory }}
poetry run poe format
poetry run poe lint

- name: Typecheck
run: |
cd ${{ matrix.directory }}
poetry run poe typecheck

- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "refactor: Lint ${{ matrix.directory }} (CI)"
branch: ${{ github.head_ref }}

Lint-And-Format-TS-SDK:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: "20.x"
creatorrr marked this conversation as resolved.
Show resolved Hide resolved

- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: sdks/ts/node_modules
key: ${{ runner.os }}-npm-${{ hashFiles('sdks/ts/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-

- name: Install npm dependencies
run: |
cd sdks/ts
npm ci
creatorrr marked this conversation as resolved.
Show resolved Hide resolved

- name: Lint and format TypeScript SDK
run: |
cd sdks/ts
npm run format

- name: Build TypeScript SDK
run: |
cd sdks/ts
# npm run build
creatorrr marked this conversation as resolved.
Show resolved Hide resolved
creatorrr marked this conversation as resolved.
Show resolved Hide resolved

- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "refactor: Lint sdks/ts (CI)"
branch: ${{ github.head_ref }}

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
220 changes: 110 additions & 110 deletions agents-api/poetry.lock

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions agents-api/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ruff = "^0.1.9"
datamodel-code-generator = "^0.25.3"
cozo-migrate = "^0.2.0"
poethepoet = "^0.24.4"
pytype = "^2024.1.5"
pytype = ">=2024.4.11"
julep = "^0.2.4"

[build-system]
Expand All @@ -40,12 +40,12 @@ build-backend = "poetry.core.masonry.api"

[tool.poe.tasks]
format = "black ."
lint = "ruff **/*.py --fix --unsafe-fixes"
typecheck = "pytype agents_api"
lint = "ruff agents_api/**/*.py migrations/**/*.py tests/**/*.py --fix --unsafe-fixes"
typecheck = "pytype -j auto -k agents_api"
check = [
"format",
"lint",
"typecheck",
]
test = "ward"
codegen = "datamodel-codegen --input ../openapi.yaml --input-file-type openapi --output agents_api/autogen/openapi_model.py --use-operation-id-as-name --use-double-quotes --use-schema-description --target-python-version 3.10 --reuse-model --collapse-root-models --use-field-description --field-include-all-keys --use-unique-items-as-set --use-subclass-enum --use-union-operator --use-one-literal-as-default --use-annotated --enum-field-as-literal one --output-model-type pydantic_v2.BaseModel"
codegen = "datamodel-codegen --input ../openapi.yaml --input-file-type openapi --output agents_api/autogen/openapi_model.py --use-operation-id-as-name --use-double-quotes --use-schema-description --target-python-version 3.10 --reuse-model --collapse-root-models --use-field-description --field-include-all-keys --use-unique-items-as-set --use-subclass-enum --use-union-operator --use-one-literal-as-default --use-annotated --enum-field-as-literal one --output-model-type pydantic_v2.BaseModel"
Loading
Loading