Feat: Add cron filters to the API (#1641) #967
This file contains hidden or 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: python | |
on: | |
pull_request: | |
paths: | |
- '.github/**' | |
- 'api/**' | |
- 'api-contracts/**' | |
- 'internal/**' | |
- 'pkg/**' | |
- 'sdks/python/**' | |
push: | |
branches: | |
- main | |
paths: | |
- 'sdks/python/**' | |
defaults: | |
run: | |
working-directory: ./sdks/python | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.13" | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.5.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Install linting tools | |
run: poetry install --all-extras | |
- name: Run Black | |
run: poetry run black . --check --verbose --diff --color | |
- name: Run Isort | |
run: poetry run isort . --check-only --diff | |
- name: Run MyPy | |
run: poetry run mypy --config-file=pyproject.toml | |
- name: Run Ruff | |
run: poetry run ruff check . | |
- name: Run Pydoclint | |
run: poetry run pydoclint . | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ["3.10", "3.11", "3.12", "3.13"] | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
version: '25.1' | |
- name: Install Task | |
uses: arduino/setup-task@v2 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
- name: Start Docker dependencies | |
working-directory: . | |
run: docker compose up -d | |
- name: Generate | |
working-directory: . | |
run: | | |
export DATABASE_URL="postgresql://hatchet:[email protected]:5431/hatchet" | |
go run ./cmd/hatchet-migrate | |
task generate-go | |
- name: Setup | |
working-directory: . | |
run: | | |
export SEED_DEVELOPMENT=true | |
export SERVER_PORT=8080 | |
export SERVER_URL=http://localhost:8080 | |
export SERVER_AUTH_COOKIE_DOMAIN=localhost | |
export SERVER_AUTH_COOKIE_INSECURE=true | |
export SERVER_DEFAULT_ENGINE_VERSION=V1 | |
go run ./cmd/hatchet-admin quickstart | |
go run ./cmd/hatchet-engine --config ./generated/ > engine.log 2>&1 & | |
go run ./cmd/hatchet-api --config ./generated/ > api.log 2>&1 & | |
sleep 30 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Display Python version | |
run: python -c "import sys; print(sys.version)" | |
- name: Install Poetry | |
uses: snok/install-poetry@v1 | |
with: | |
version: 1.5.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
- name: Install dependencies | |
run: poetry install --no-interaction --all-extras | |
- name: Generate Env File | |
working-directory: . | |
run: | | |
echo "HATCHET_CLIENT_TOKEN=$(go run ./cmd/hatchet-admin token create --config ./generated/ --tenant-id 707d0855-80ab-4e1f-a156-f1c4546cbf52)" >> $GITHUB_ENV | |
echo "HATCHET_CLIENT_TLS_ROOT_CA_FILE=../../certs/ca.cert" >> $GITHUB_ENV | |
echo "HATCHET_CLIENT_WORKER_HEALTHCHECK_ENABLED=True" >> $GITHUB_ENV | |
- name: Set HATCHET_CLIENT_NAMESPACE | |
run: | | |
PYTHON_VERSION=$(python -c "import sys; print(f'py{sys.version_info.major}{sys.version_info.minor}')") | |
SHORT_SHA=$(git rev-parse --short HEAD) | |
echo "HATCHET_CLIENT_NAMESPACE=${PYTHON_VERSION}-${SHORT_SHA}" >> $GITHUB_ENV | |
- name: Run pytest | |
run: | | |
echo "Using HATCHET_CLIENT_NAMESPACE: $HATCHET_CLIENT_NAMESPACE" | |
poetry run pytest -s -vvv --maxfail=5 --capture=no --retries 3 --retry-delay 2 | |
- name: Upload engine logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: $HATCHET_CLIENT_NAMESPACE-engine-logs | |
path: $HATCHET_CLIENT_NAMESPACE-engine.log | |
- name: Upload API logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: $HATCHET_CLIENT_NAMESPACE-api-logs | |
path: $HATCHET_CLIENT_NAMESPACE-api.log | |
publish: | |
runs-on: ubuntu-latest | |
needs: [lint, test] | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Install Poetry | |
run: | | |
pipx install poetry==1.7.1 | |
- name: Run publish.sh script | |
run: | | |
CURRENT_PYPI_VERSION=$(pip index versions hatchet-sdk | awk 'NR==1 {gsub(/[()]/,"",$2); print $2}') | |
NEW_VERSION=$(cat pyproject.toml| grep "^version =" | cut -d '"' -f 2) | |
if [ "$CURRENT_PYPI_VERSION" == "$NEW_VERSION" ]; then | |
echo "Version has not changed. Skipping publish." | |
exit 0 | |
fi | |
sh publish.sh | |
env: | |
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.POETRY_PYPI_TOKEN_PYPI }} |