feat: initial logical to physical compile #2947
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
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/[email protected] | |
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/[email protected] | |
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 |