Skip to content

Latest OS-HPXML

Latest OS-HPXML #1709

Workflow file for this run

name: ci
on:
push:
branches: [ master ]
pull_request:
types: [ synchronize, opened ]
workflow_dispatch:
# Cancel in-progress jobs when a new commit is pushed to the PR
# This avoids CI jobs "stacking up" for the same PR
# This won't stop existing job if new commit is pushed with [ci skip].
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
OS_VERSION: "3.11.0"
OS_SHA: 241b8abb4d
OS_URL: https://github.com/NatLabRockies/OpenStudio/releases/download
jobs:
run-ruleset-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt update
sudo -E apt-get install -y wget unzip python3-sphinx-rtd-theme
- name: Install OpenStudio
run: |
wget -q -O OpenStudio.deb ${OS_URL}/v${OS_VERSION}/OpenStudio-${OS_VERSION}+${OS_SHA}-Ubuntu-24.04-x86_64.deb
sudo dpkg -i OpenStudio.deb
rm OpenStudio.deb
- name: Check HPXMLs
shell: bash
run: |
echo "Regenerating HPXML files..."
openstudio tasks.rb update_hpxmls
git config --global --add safe.directory $(realpath .)
echo "Checking for HPXML differences..."
echo "If differences are found below, then HPXMLs need to be regenerated using: openstudio tasks.rb update_hpxmls"
git diff --exit-code --ignore-cr-at-eol workflow/*.xml
- name: Run ruleset tests
run: |
openstudio tasks.rb ruleset_tests
- name: Build documentation
run: |
cd docs
make html SPHINXOPTS="-W --keep-going -n"
- name: Check documentation
run: |
echo "Checking for misaligned documentation footnotes..."
for RST_FILE in docs/source/*.rst; do NUM_REFS=$(grep -F -o "[#]_" $RST_FILE | wc -l); NUM_FOOTNOTES=$(grep -F -o ".. [#]" $RST_FILE | wc -l); if [ $NUM_REFS != $NUM_FOOTNOTES ]; then echo "ERROR: Number of footnote references doesn't match number of footnotes in $RST_FILE." && exit 1; fi done
- name: Save Docs
uses: actions/upload-artifact@v7
with:
name: documentation
path: docs/_build/html/
run-sample-files1-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install OpenStudio
run: |
wget -q -O OpenStudio.deb ${OS_URL}/v${OS_VERSION}/OpenStudio-${OS_VERSION}+${OS_SHA}-Ubuntu-24.04-x86_64.deb
sudo dpkg -i OpenStudio.deb
rm OpenStudio.deb
- name: Run Sample Files 1 tests
run: |
openstudio tasks.rb sample_files_tests1
- name: Store results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/test_results
name: test_results_sample_files1
run-sample-files2-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install OpenStudio
run: |
wget -q -O OpenStudio.deb ${OS_URL}/v${OS_VERSION}/OpenStudio-${OS_VERSION}+${OS_SHA}-Ubuntu-24.04-x86_64.deb
sudo dpkg -i OpenStudio.deb
rm OpenStudio.deb
- name: Run Sample Files 2 tests
run: |
openstudio tasks.rb sample_files_tests2
- name: Store results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/test_results
name: test_results_sample_files2
run-real-home-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install OpenStudio
run: |
wget -q -O OpenStudio.deb ${OS_URL}/v${OS_VERSION}/OpenStudio-${OS_VERSION}+${OS_SHA}-Ubuntu-24.04-x86_64.deb
sudo dpkg -i OpenStudio.deb
rm OpenStudio.deb
- name: Run Real Home tests
run: |
openstudio tasks.rb real_home_tests
- name: Store results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/test_results
name: test_results_real_homes
run-other-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install OpenStudio
run: |
wget -q -O OpenStudio.deb ${OS_URL}/v${OS_VERSION}/OpenStudio-${OS_VERSION}+${OS_SHA}-Ubuntu-24.04-x86_64.deb
sudo dpkg -i OpenStudio.deb
rm OpenStudio.deb
- name: Run Other tests
run: |
openstudio tasks.rb other_tests
- name: Store results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/test_results
name: test_results_other
- name: Store release package
uses: actions/upload-artifact@v7
with:
path: OpenStudio-ERI-*.zip
archive: false
run-windows-tests:
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Install software
shell: pwsh
run: |
Invoke-WebRequest -OutFile Windows.tar.gz -URI "${env:OS_URL}/v${env:OS_VERSION}/OpenStudio-${env:OS_VERSION}+${env:OS_SHA}-Windows.tar.gz"
tar -xzf Windows.tar.gz
- name: Run simulation test
shell: pwsh
run: |
& .\OpenStudio-${env:OS_VERSION}+${env:OS_SHA}-Windows\bin\openstudio.exe workflow\energy_rating_index.rb -x workflow\sample_files\base.xml --diagnostic-output
- name: Run simulation test2
shell: pwsh
run: |
& .\OpenStudio-${env:OS_VERSION}+${env:OS_SHA}-Windows\bin\openstudio.exe workflow\energy_rating_index.rb -x workflow\sample_files\base-versions-multiple-sf.xml --daily ALL --add-component-loads
merge-results:
runs-on: ubuntu-24.04
needs: [run-sample-files1-tests, run-sample-files2-tests, run-real-home-tests, run-other-tests]
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Download all results
uses: actions/download-artifact@v8
with:
path: test_results
pattern: test_results_*
merge-multiple: true
- name: Delete artifacts
uses: geekyeggo/delete-artifact@v6
with:
name: test_results_*
- name: Merge results
run: |
mkdir workflow/tests/test_results
cp -r test_results/*.csv workflow/tests/test_results
cd workflow/tests
pip install pandas
python ../../hpxml-measures/workflow/tests/merge.py test_results/sample_files1.csv test_results/sample_files2.csv test_results/sample_files.csv
rm test_results/sample_files1.csv
rm test_results/sample_files2.csv
- name: Store results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/test_results
name: test_results
compare-results:
if: github.event_name == 'pull_request'
runs-on: ubuntu-24.04
needs: merge-results
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.base.sha }}
- name: Store base results
uses: actions/upload-artifact@v7
with:
path: workflow/tests/base_results
name: base_results
- uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Download base results
uses: actions/download-artifact@v8
with:
path: base_results
name: base_results
- name: Download feature results
uses: actions/download-artifact@v8
with:
path: test_results
name: test_results
- name: Compare results
run: |
cp -r base_results/*.csv workflow/tests/base_results
mkdir workflow/tests/test_results
cp -r test_results/*.csv workflow/tests/test_results
pip install numpy
pip install pandas
pip install plotly
pip install kaleido
python hpxml-measures/workflow/tests/compare.py -a results
python hpxml-measures/workflow/tests/compare.py -a visualize
- name: Store comparisons
uses: actions/upload-artifact@v7
with:
path: workflow/tests/comparisons
name: comparisons
update-results:
runs-on: ubuntu-24.04
needs: merge-results
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.head_ref }}
- name: Download feature results
uses: actions/download-artifact@v8
with:
path: test_results
name: test_results
- name: Commit latest results
shell: bash
run: |
branch_name="${{ github.head_ref }}"
git pull origin $branch_name
cp -r test_results/*.csv workflow/tests/base_results
git add workflow/tests/base_results
git status
if [[ $(git diff --cached --exit-code) ]]; then
git config --global user.email "github-action@users.noreply.github.com"
git config --global user.name "GitHub Action"
git commit -m "Latest results. [skip ci]"
echo "Pushing to branch: $branch_name"
git push -u origin $branch_name
fi