[MAINTENANCE] Change ci pipeline to pull_request_target with a permissions check to allow CI on forks #1
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: unpriveledged-ci | |
on: | |
pull_request: | |
concurrency: | |
# Only run one instance of this workflow in PRs, but allow multiple instances in develop. | |
# https://stackoverflow.com/questions/74117321/if-condition-in-concurrency-in-gha | |
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
static-analysis: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: | | |
requirements-types.txt | |
reqs/requirements-dev-contrib.txt | |
- name: Install dependencies | |
run: pip install -r requirements-types.txt -r reqs/requirements-dev-contrib.txt | |
- run: invoke lint --no-fmt | |
- run: invoke fmt --check | |
- name: Type-check | |
run: | | |
invoke type-check --ci --pretty | |
invoke type-check --ci --pretty --check-stub-sources | |
- name: Marker-coverage-check | |
run: invoke marker-coverage | |
unit-tests: | |
env: | |
GX_PYTHON_EXPERIMENTAL: true # allow for python 3.12+ | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache-dependency-path: | | |
reqs/requirements-dev-test.txt | |
setup.py | |
- name: Install dependencies | |
run: pip install . -c constraints-dev.txt -r reqs/requirements-dev-test.txt | |
- name: Run the unit tests | |
# TODO: revert the timeout back to 1.5 or lower after resolving arc issues | |
run: invoke ci-tests -m "unit" --xdist --slowest=10 --timeout=2.0 --reports | |
doc-checks: | |
needs: [static-analysis] | |
if: github.event.pull_request.draft == false | |
permissions: | |
id-token: write | |
contents: read | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: | | |
reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install -r reqs/requirements-dev-test.txt | |
- name: check_repo_root_size | |
run: sh ./ci/checks/check_repo_root_size.sh | |
- name: Docstring linter | |
run: invoke docstrings | |
- name: line_number_snippet_checker | |
run: python ci/checks/check_no_line_number_snippets.py | |
- name: name_tag_snippet_checker | |
run: python ci/checks/check_only_name_tag_snippets.py | |
- name: integration_test_gets_run_checker | |
run: python ci/checks/check_integration_test_gets_run.py | |
- name: name_tag_snippet_referenced_checker | |
run: python ci/checks/check_name_tag_snippets_referenced.py | |
- name: public_api_report | |
run: invoke public-api | |
- name: link_checker | |
run: python docs/checks/docs_link_checker.py -p docs/docusaurus/docs -r docs/docusaurus/docs -sr docs/docusaurus/static -s docs -sp static --skip-external | |
py39-min-versions: | |
needs: [unit-tests, static-analysis] | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/py39-min-install.txt -r reqs/requirements-dev-test.txt | |
- name: Run the tests | |
run: invoke ci-tests -m unit --xdist --slowest=10 --timeout=2.0 | |
py310-min-versions: | |
needs: [unit-tests, static-analysis] | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
cache-dependency-path: reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/py310-min-install.txt -r reqs/requirements-dev-test.txt | |
- name: Run the tests | |
run: invoke ci-tests -m unit --xdist --slowest=10 --timeout=2.0 | |
py311-min-versions: | |
needs: [unit-tests, static-analysis] | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
cache: "pip" | |
cache-dependency-path: reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/py311-min-install.txt -r reqs/requirements-dev-test.txt | |
- name: Run the tests | |
run: invoke ci-tests -m unit --xdist --slowest=10 --timeout=2.0 | |
py312-min-versions: | |
needs: [unit-tests, static-analysis] | |
env: | |
GX_PYTHON_EXPERIMENTAL: true # allow for python 3.12+ | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.12" | |
cache: "pip" | |
cache-dependency-path: reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/py312-min-install.txt -r reqs/requirements-dev-test.txt | |
- name: Run the tests | |
run: invoke ci-tests -m unit --xdist --slowest=10 --timeout=2.0 | |
pydantic-v1: | |
needs: [unit-tests, static-analysis] | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: reqs/requirements-dev-test.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/pydantic-v1-install.txt -r reqs/requirements-dev-test.txt | |
- name: Run the tests | |
run: invoke ci-tests -m unit --xdist --slowest=10 --timeout=2.0 | |
airflow-min-versions: | |
needs: [unit-tests, static-analysis] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: "pip" | |
cache-dependency-path: requirements.txt | |
- name: Install dependencies | |
run: pip install . -c ci/constraints-test/airflow-min-install.txt | |
- name: Run the test | |
# ensure the great_expectations can be imported and a context created | |
run: sh ci/checks/check_min_airflow_dependency_compatibility.sh | |
import_gx: | |
needs: [static-analysis] | |
if: github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
env: | |
GX_PYTHON_EXPERIMENTAL: true # allow for python 3.12+ | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
exclude: | |
- python-version: ${{ github.event_name == 'pull_request' && '3.10' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: "pip" | |
cache-dependency-path: requirements.txt | |
- name: Install Great Expectations with core deps only | |
run: pip install . | |
- name: Import Great Expectations | |
run: python -c "import great_expectations as gx; print('Successfully imported GX Version:', gx.__version__)" |