Skip to content

feat: Execute Python queries #1942

feat: Execute Python queries

feat: Execute Python queries #1942

on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
merge_group:
branches: [ main ]
# In cases of concurrent workflows running (consecutive pushes to PR)
# leave the latest workflow and cancel the other (older) workflows
# See https://docs.github.com/en/actions/using-jobs/using-concurrency
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: write
contents: read
name: Python Client CI
jobs:
python_client_skip:
name: Python Client Skip Duplicates
continue-on-error: true # Uncomment once integration is finished
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
run_id: ${{ fromJSON(steps.skip_check.outputs.skipped_by).id }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: 'never'
skip_after_successful_duplicate: 'true'
paths: '["clients/python/**", "proto/**"]'
do_not_skip: '["workflow_dispatch", "schedule"]'
python_protos:
runs-on: ubuntu-latest
if: needs.python_client_skip.outputs.should_skip != 'true'
steps:
- uses: actions/checkout@v3
- name: Install Buf
uses: bufbuild/buf-setup-action@v1.12.0
with:
version: "1.17.0"
buf_user: ${{ secrets.BUF_USER }}
buf_api_token: ${{ secrets.BUF_API_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Generate Protos
run: buf generate
working-directory: proto
- name: Upload Python Proto Artifact
uses: actions/upload-artifact@v3
with:
name: python-protos
# Python gRPC code is generated in src/kaskada/kaskada
path: clients/python/src/kaskada/kaskada
# if: statement is on each *step* instead of the whole job due to
# https://github.com/actions/runner/issues/952
# and https://github.com/orgs/community/discussions/9141
python_client_build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.8", "3.9"]
needs: [python_client_skip, python_protos]
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./clients/python
steps:
- uses: actions/checkout@v3
if: needs.python_client_skip.outputs.should_skip != 'true'
- uses: actions/setup-python@v4
if: needs.python_client_skip.outputs.should_skip != 'true'
with:
python-version: ${{ matrix.python-version }}
- name: Download Python Proto Artifact
if: needs.python_client_skip.outputs.should_skip != 'true'
uses: actions/download-artifact@v3
with:
name: python-protos
path: clients/python/src/kaskada/kaskada
- name: Run image
if: needs.python_client_skip.outputs.should_skip != 'true'
uses: abatilo/actions-poetry@v2.0.0
with:
poetry-version: 1.3.2
- name: Install project
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry install
- name: Python Client Style
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry run poe style
- name: Python Client Types
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry run poe types
- name: Python Client Lint
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry run poe lint
- name: Python Client Test
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry run poe test
- name: Python Client Docs
if: needs.python_client_skip.outputs.should_skip != 'true'
run: poetry run poe docs
- name: Upload Python Client Artifacts
if: needs.python_client_skip.outputs.should_skip != 'true'
uses: actions/upload-artifact@v3
with:
name: kaskada-client-docs
retention-days: 5
path: clients/python/docs/build