Add missing self install #1738
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: Power Balance Models Ubuntu | |
on: | |
push: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test_modelica_build: | |
container: | |
image: openmodelica/openmodelica:v1.23.1-ompython | |
name: Test Modelica Build (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
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.os }} | |
path: build/ | |
retention-days: 1 | |
test_module_build: | |
name: Test Module Build (Python${{ matrix.python-version }} ${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
python-version: [ '3.11', '3.12', '3.13' ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Poetry and Export Requirements | |
run: | | |
python3 -m pip install poetry | |
poetry self add poetry-plugin-export | |
poetry export -f requirements.txt --with dev -o requirements.txt --all-extras | |
- name: Build Module | |
run: | | |
python -m pip install -r requirements.txt | |
python -m pip install . | |
powerbalance generate-profiles | |
- name: Archive Plasma Profiles | |
uses: actions/upload-artifact@v4 | |
if: ${{ matrix.python-version == '3.12' }} | |
with: | |
name: om-plasma-profiles-${{ github.run_id }}-${{ matrix.os }} | |
path: power_balance/profiles/mat_profile_files/*.mat | |
retention-days: 1 | |
- name: Archive Requirements File | |
uses: actions/upload-artifact@v4 | |
if: ${{ matrix.python-version == '3.12' }} | |
with: | |
name: requirements-${{ matrix.os }} | |
path: requirements.txt | |
retention-days: 1 | |
model_run_om: | |
container: | |
image: openmodelica/openmodelica:v1.23.1-ompython | |
name: Model Run Open Modelica (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04] | |
needs: [test_modelica_build] | |
steps: | |
- name: Retrieve Open Modelica model binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: om-binaries-${{ github.run_id }}-${{ matrix.os }} | |
path: build | |
- name: Retrieve Plasma profiles | |
uses: actions/download-artifact@v4 | |
with: | |
name: om-plasma-profiles-${{ github.run_id }}-${{ matrix.os }} | |
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: | |
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.11', '3.12', '3.13' ] | |
needs: [test_module_build] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install OpenModelica | |
run: | | |
echo "deb https://build.openmodelica.org/omc/builds/linux/releases/1.23.1/ bionic release" | sudo tee /etc/apt/sources.list.d/openmodelica.list | |
sudo curl -fsSL http://build.openmodelica.org/apt/openmodelica.asc | sudo gpg --dearmor -o /usr/share/keyrings/openmodelica-keyring.gpg | |
sudo apt update | |
sudo apt install -y omc | |
- name: Retrieve Requirements File | |
uses: actions/download-artifact@v4 | |
with: | |
name: requirements-${{ matrix.os }} | |
path: requirements.txt | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run Models | |
run: | | |
python -m pip install -r requirements.txt | |
python -m pip install . | |
powerbalance install-msl | |
python -m 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' }} | |
with: | |
name: coverage-run | |
path: coverage_default | |
retention-days: 1 | |
regression_tests: | |
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.11', '3.12', '3.13' ] | |
needs: [test_module_build] | |
steps: | |
- name: Install OpenModelica | |
run: | | |
echo "deb https://build.openmodelica.org/omc/builds/linux/releases/1.23.1/ bionic release" | sudo tee /etc/apt/sources.list.d/openmodelica.list | |
sudo curl -fsSL http://build.openmodelica.org/apt/openmodelica.asc | sudo gpg --dearmor -o /usr/share/keyrings/openmodelica-keyring.gpg | |
sudo apt update | |
sudo apt install -y omc | |
- uses: actions/checkout@v4 | |
- name: Retrieve Requirements File | |
uses: actions/download-artifact@v4 | |
with: | |
name: requirements-${{ matrix.os }} | |
path: requirements.txt | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run Regression Tests | |
run: | | |
python -m pip install -r requirements.txt | |
python -m pip install . | |
powerbalance install-msl | |
python -m 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' }} | |
with: | |
name: coverage-regression | |
path: coverage_regression | |
retention-days: 1 | |
unit_tests: | |
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.11', '3.12', '3.13' ] | |
needs: [test_module_build] | |
steps: | |
- name: Install OpenModelica | |
run: | | |
echo "deb https://build.openmodelica.org/omc/builds/linux/releases/1.23.1/ bionic release" | sudo tee /etc/apt/sources.list.d/openmodelica.list | |
sudo curl -fsSL http://build.openmodelica.org/apt/openmodelica.asc | sudo gpg --dearmor -o /usr/share/keyrings/openmodelica-keyring.gpg | |
sudo apt update | |
sudo apt install -y omc | |
- uses: actions/checkout@v4 | |
- name: Retrieve Requirements File | |
uses: actions/download-artifact@v4 | |
with: | |
name: requirements-${{ matrix.os }} | |
path: requirements.txt | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Run Regression Tests | |
run: | | |
python -m pip install -r requirements.txt | |
python -m pip install . | |
powerbalance install-msl | |
python -m 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' }} | |
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 Poetry | |
run: python3 -m pip install poetry | |
- 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 | |
poetry run pip install coverage | |
poetry run coverage combine coverage/coverage_* | |
poetry run coverage xml -i | |
poetry 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 |