Feature / Move validation into gRPC interceptors (#484) #1537
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: Build and Test | |
# Run the main build and test for all branch pushes and pull requests, do not repeat the build for tags | |
on: | |
push: | |
branches: | |
- '**' | |
pull_request: | |
env: | |
JAVA_DISTRIBUTION: "zulu" | |
PYTHON_VERSION: "3.12" | |
NODE_VERSION: "22" | |
jobs: | |
platform_build: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
strategy: | |
# Try to finish all jobs - it can be helpful to see if some succeed and others fail | |
fail-fast: false | |
matrix: | |
JAVA_VERSION: | |
- 11 | |
- 17 | |
- 21 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Java | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ env.JAVA_DISTRIBUTION }} | |
java-version: ${{ matrix.JAVA_VERSION }} | |
# Turn on Gradle dependency caching | |
cache: gradle | |
- name: Build | |
run: ./gradlew classes testClasses | |
- name: Unit tests | |
run: ./gradlew test | |
# If the tests fail, make the output available for download | |
- name: Store failed test results | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: junit-test-results | |
path: build/modules/*/reports/** | |
retention-days: 7 | |
python_runtime: | |
# Testing targets for the Python model runtime | |
# Include the latest stable release (3.9) | |
# Oldest supported version is 3.6, this is required by Pandas 1.0 | |
# (also note Python 3.5 is EOL, final release 3.5.10 was in September 2020) | |
# Do not include 2.7 - that ship has sailed! | |
strategy: | |
# Try to finish all jobs - it can be helpful to see if some succeed and others fail | |
fail-fast: false | |
matrix: | |
environment: | |
# Latest supported versions on all 3 major platforms | |
- { PLATFORM: "windows", | |
PYTHON_VERSION: "3.12", | |
PANDAS_DEPENDENCY: "pandas ~= 2.1.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.5.0" } | |
- { PLATFORM: "macos", | |
PYTHON_VERSION: "3.12", | |
PANDAS_DEPENDENCY: "pandas ~= 2.1.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.5.0" } | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.12", | |
PANDAS_DEPENDENCY: "pandas ~= 2.1.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.5.0" } | |
# Intermediate supported versions, force testing against .0 for Pandas 2.0 | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.11", | |
PANDAS_DEPENDENCY: "pandas == 2.0.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.4.0" } | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.10", | |
PANDAS_DEPENDENCY: "pandas ~= 1.5.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.3.0" } | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.9", | |
PANDAS_DEPENDENCY: "pandas ~= 1.3.0", | |
PYSPARK_DEPENDENCY: "pyspark ~= 3.1.0" } | |
# Oldest supported versions, force testing against .0 for Pandas and PySpark | |
# If those don't work due to bugs, we need to update README for the supported versions | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.8", | |
PANDAS_DEPENDENCY: "pandas == 1.2.0", | |
PYSPARK_DEPENDENCY: "pyspark == 3.0.0" } | |
# E.g. platform = "windows" -> build image = "windows-latest" | |
runs-on: ${{ matrix.environment.PLATFORM }}-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.environment.PYTHON_VERSION }} | |
- name: PIP Upgrade | |
run: python -m pip install --upgrade pip | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
cd tracdap-runtime/python | |
pip install "${{ matrix.environment.PANDAS_DEPENDENCY }}" | |
pip install "${{ matrix.environment.PYSPARK_DEPENDENCY }}" | |
pip install -r requirements.txt | |
- name: Protoc code generation | |
run: python tracdap-runtime/python/build_runtime.py --target codegen | |
- name: Unit tests | |
run: python tracdap-runtime/python/build_runtime.py --target test | |
- name: Python example models | |
run: python tracdap-runtime/python/build_runtime.py --target examples | |
web_api: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: npm | |
cache-dependency-path: tracdap-api/packages/web/package-lock.json | |
- name: Install dependencies | |
run: | | |
cd tracdap-api/packages/web | |
npm install | |
- name: Build API | |
run: | | |
cd tracdap-api/packages/web | |
npm run buildApi | |
documentation: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: PIP Upgrade | |
run: python -m pip install --upgrade pip | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies for build tools | |
run: | | |
cd dev/ | |
pip install -r requirements.txt | |
- name: Run all docgen targets | |
run: | | |
cd dev/ | |
python docgen/docgen-ctrl.py all |