Skip to content

Feature / Move validation into gRPC interceptors (#484) #1537

Feature / Move validation into gRPC interceptors (#484)

Feature / Move validation into gRPC interceptors (#484) #1537

Workflow file for this run

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