Compliance update (Netty) #1997
Workflow file for this run
This file contains hidden or 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.13" | |
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 --parallel | |
- 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.13", | |
PANDAS_DEPENDENCY: "'pandas ~= 2.2.0'", | |
PYSPARK_DEPENDENCY: "'pyspark ~= 3.5.0'" } | |
- { PLATFORM: "macos", | |
PYTHON_VERSION: "3.13", | |
PANDAS_DEPENDENCY: "'pandas ~= 2.2.0'", | |
PYSPARK_DEPENDENCY: "'pyspark ~= 3.5.0'" } | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.13", | |
PANDAS_DEPENDENCY: "'pandas ~= 2.2.0'", | |
PYSPARK_DEPENDENCY: "'pyspark ~= 3.5.0'" } | |
# Python 3.12 requires Pandas 2.1, Pandas 2.0 only has binaries for 3.11 | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.12", | |
PANDAS_DEPENDENCY: "'pandas ~= 2.1.0'", | |
PYSPARK_DEPENDENCY: "'pyspark ~= 3.4.0'" } | |
# Force testing on the first release of the Pandas 2 series, requires Python 3.11 | |
# Note NumPy 2.0 only works with Pandas 2.1 and later | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.11", | |
PANDAS_DEPENDENCY: "'pandas == 2.0.0' 'numpy < 2.0.0'", | |
PYSPARK_DEPENDENCY: "'pyspark ~= 3.3.0'" } | |
# Test the latest release in the Pandas 1.X series | |
# This could also work with Python 3.11 but we want to test every supported Python version | |
- { PLATFORM: "ubuntu", | |
PYTHON_VERSION: "3.10", | |
PANDAS_DEPENDENCY: "'pandas ~= 1.5.0' 'numpy < 2.0.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.9", | |
PANDAS_DEPENDENCY: "'pandas == 1.2.0' 'numpy < 2.0.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 |