Skip to content

Latest OS-HPXML, ANSI 301-2022 #1212

Latest OS-HPXML, ANSI 301-2022

Latest OS-HPXML, ANSI 301-2022 #1212

Workflow file for this run

name: ci
on:
push:
branches: [ master ]
pull_request:
types: [ synchronize, opened ]
workflow_dispatch:
jobs:
run-ruleset-tests:
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:dev-3.8.0-rc2
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
rm -f Gemfile.lock && bundle install
export DEBIAN_FRONTEND=noninteractive
sudo apt update
sudo -E apt-get install -y wget unzip python3-sphinx-rtd-theme
- name: Check HPXMLs
shell: bash
run: |
echo "Regenerating HPXML files..."
openstudio tasks.rb update_measures
echo "Checking for HPXML differences..."
git config --global --add safe.directory $(realpath .)
git diff --exit-code --ignore-cr-at-eol workflow/*.xml
- name: Run ruleset tests
run: |
bundle exec rake test_rulesets
- name: Store code coverage
uses: actions/upload-artifact@v4
with:
path: coverage
name: coverage
- 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@v4
with:
name: documentation
path: docs/_build/html/
run-sample-files1-tests:
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:dev-3.8.0-rc2
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
rm -f Gemfile.lock && bundle install
- name: Run Sample Files 1 tests
run: |
bundle exec rake test_sample_files1
- name: Store results
uses: actions/upload-artifact@v4
with:
path: workflow/tests/test_results
name: test_results_sample_files1
run-sample-files2-tests:
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:dev-3.8.0-rc2
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
rm -f Gemfile.lock && bundle install
- name: Run Sample Files 2 tests
run: |
bundle exec rake test_sample_files2
- name: Store results
uses: actions/upload-artifact@v4
with:
path: workflow/tests/test_results
name: test_results_sample_files2
run-real-home-tests:
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:dev-3.8.0-rc2
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
rm -f Gemfile.lock && bundle install
- name: Run Real Home tests
run: |
bundle exec rake test_real_homes
- name: Store results
uses: actions/upload-artifact@v4
with:
path: workflow/tests/test_results
name: test_results_real_homes
run-other-tests:
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:dev-3.8.0-rc2
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software
run: |
rm -f Gemfile.lock && bundle install
- name: Run Other tests
run: |
bundle exec rake test_other
- name: Store results
uses: actions/upload-artifact@v4
with:
path: workflow/tests/test_results
name: test_results_other
run-windows-tests:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Install software and run test
shell: pwsh
run: |
$env:OS_VERSION="3.8.0-rc2"
$env:OS_SHA="af997f4fef"
Invoke-WebRequest -OutFile Windows.tar.gz -URI "https://github.com/NREL/OpenStudio/releases/download/v${env:OS_VERSION}/OpenStudio-${env:OS_VERSION}+${env:OS_SHA}-Windows.tar.gz"
tar -xzf Windows.tar.gz
& .\OpenStudio-${env:OS_VERSION}+${env:OS_SHA}-Windows\bin\openstudio.exe workflow\energy_rating_index.rb -x workflow\sample_files\base.xml --hourly ALL --add-component-loads
merge-results:
runs-on: ubuntu-latest
needs: [run-sample-files1-tests, run-sample-files2-tests, run-real-home-tests, run-other-tests]
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Download all results
uses: actions/download-artifact@v4
with:
path: test_results
pattern: test_results_*
merge-multiple: true
- name: Delete artifacts
uses: geekyeggo/delete-artifact@v5
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@v4
with:
path: workflow/tests/test_results
name: test_results
compare-results:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
needs: merge-results
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.sha }}
- name: Store base results
uses: actions/upload-artifact@v4
with:
path: workflow/tests/base_results
name: base_results
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Download base results
uses: actions/download-artifact@v4
with:
path: base_results
name: base_results
- name: Download feature results
uses: actions/download-artifact@v4
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@v4
with:
path: workflow/tests/comparisons
name: comparisons
update-results:
runs-on: ubuntu-latest
needs: merge-results
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Download feature results
uses: actions/download-artifact@v4
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."
echo "Pushing to branch: $branch_name"
git push -u origin $branch_name
fi