💚 Ensure 3.13 running for profile generation #1775
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: Power Balance Models Ubuntu | |
on: [push] | |
jobs: | |
test_modelica_build: | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
name: Test Modelica Build (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: ['3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Compile models | |
run: | | |
mkdir build | |
cd build | |
echo "installPackage(Modelica, \"4.0.0\", exactMatch=true)" >> install.mos | |
ln -s ${GITHUB_WORKSPACE}/power_balance/models/*.mo . | |
omc install.mos | |
omc -s $(ls *.mo) Modelica +i=Tokamak.Interdependencies | |
make -f Tokamak_Interdependencies.makefile | |
shell: bash | |
- name: Archive Modelica Binaries | |
uses: actions/upload-artifact@v4 | |
with: | |
name: om-binaries-${{ github.run_id }}-${{ matrix.python-version }} | |
path: build/ | |
retention-days: 1 | |
test_module_build: | |
name: Test Module Build (Python${{ matrix.python-version }} ${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: [ '3.12', '3.10', '3.13' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install UV | |
run: python3 -m pip install uv | |
- name: Build Module | |
run: uv run -p ${{ matrix.python-version }} powerbalance generate-profiles | |
- name: Archive Plasma Profiles | |
uses: actions/upload-artifact@v4 | |
with: | |
name: om-plasma-profiles-${{ github.run_id }}-${{ matrix.python-version }} | |
path: power_balance/profiles/mat_profile_files/*.mat | |
retention-days: 1 | |
model_run_om: | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
name: Model Run Open Modelica (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: ['3.13'] | |
needs: [test_modelica_build] | |
steps: | |
- name: Retrieve Open Modelica model binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: om-binaries-${{ github.run_id }}-${{ matrix.python-version }} | |
path: build | |
- name: Retrieve Plasma profiles | |
uses: actions/download-artifact@v4 | |
with: | |
name: om-plasma-profiles-${{ github.run_id }}-${{ matrix.python-version }} | |
path: power_balance/profiles/mat_profile_files | |
- name: Run Models | |
run: | | |
cd build | |
chmod +x ./Tokamak_Interdependencies | |
ln -s ../power_balance/profiles/mat_profile_files/* . | |
./Tokamak_Interdependencies | |
model_run_api: | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
name: Model Run API (${{ matrix.os }} Python${{ matrix.python-version }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: [ '3.10', '3.12', '3.13' ] | |
needs: [test_module_build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install UV | |
run: python3 -m pip install uv | |
- name: Run Models | |
run: | | |
uv run -p ${{ matrix.python-version }} powerbalance install-msl | |
uv run -p ${{ matrix.python-version }} coverage run --source=power_balance --data-file=coverage_default -m pytest tests/scenarios | |
- name: Archive Run Coverage | |
uses: actions/upload-artifact@v4 | |
if: ${{ github.ref_name == 'main' && matrix.python-version == '3.13' }} | |
with: | |
name: coverage-run | |
path: coverage_default | |
retention-days: 1 | |
regression_tests: | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
name: Regression Tests (${{ matrix.os }} Python${{ matrix.python-version }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: [ '3.13', '3.10', '3.12' ] | |
needs: [test_module_build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install UV | |
run: python3 -m pip install uv | |
- name: Run Regression Tests | |
run: | | |
uv run -p ${{ matrix.python-version }} powerbalance install-msl | |
uv run -p ${{ matrix.python-version }} coverage run --source=power_balance --data-file=coverage_regression -m pytest tests/regression_tests | |
- name: Archive Run Coverage | |
uses: actions/upload-artifact@v4 | |
if: ${{ github.ref_name == 'main' && matrix.python-version == '3.13' }} | |
with: | |
name: coverage-regression | |
path: coverage_regression | |
retention-days: 1 | |
unit_tests: | |
container: | |
image: openmodelica/openmodelica:v1.25.0-ompython | |
name: Unit Tests (${{ matrix.os }} Python${{ matrix.python-version }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: [ '3.13', '3.10', '3.12' ] | |
needs: [test_module_build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install UV | |
run: python3 -m pip install uv | |
- name: Run Unit Tests | |
run: | | |
uv run -p ${{ matrix.python-version }} powerbalance install-msl | |
uv run -p ${{ matrix.python-version }} coverage run --data-file=coverage_unit --source=power_balance -m pytest tests/unit_tests | |
- name: Archive Run Coverage | |
uses: actions/upload-artifact@v4 | |
if: ${{ github.ref_name == 'main' && matrix.python-version == '3.13' }} | |
with: | |
name: coverage-unit | |
path: coverage_unit | |
retention-days: 1 | |
collate_coverage: | |
name: Collate Coverage | |
runs-on: ubuntu-latest | |
if: ${{ github.ref_name == 'main' }} | |
needs: [unit_tests, regression_tests, model_run_api] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install UV | |
run: python3 -m pip install uv | |
- name: Retrieve Unit Test Coverage | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-unit | |
path: coverage | |
- name: Retrieve Regression Test Coverage | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-regression | |
path: coverage | |
- name: Retrieve PBM Run Coverage | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-run | |
path: coverage | |
- name: Combine Coverage | |
run: | | |
find . -name "*.pyc" -delete | |
uv run pip install coverage | |
uv run coverage combine coverage/coverage_* | |
uv run coverage xml -i | |
uv run coverage report -i | |
continue-on-error: true | |
- uses: codecov/codecov-action@v5 | |
with: | |
env_vars: OS,PYTHON | |
files: coverage.xml | |
continue-on-error: true |