BuildResidentialHPXML measure: Shared recirculation #6042
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: ci | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
types: [ synchronize, opened ] | |
workflow_dispatch: | |
jobs: | |
run-unit-tests: | |
runs-on: ubuntu-latest | |
container: | |
image: docker://nrel/openstudio:3.8.0 | |
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 measures | |
shell: bash | |
run: | | |
out=$(openstudio tasks.rb update_measures 2>&1) | |
if [[ "$out" == *"RuboCop failed"* ]]; then echo "$out" && exit 1; fi | |
echo "Checking for file differences..." | |
git config --global --add safe.directory $(realpath .) | |
git diff --exit-code --ignore-cr-at-eol *.rb | |
- name: Check HPXMLs | |
shell: bash | |
run: | | |
echo "Regenerating HPXML files..." | |
openstudio tasks.rb update_hpxmls | |
echo "Checking for HPXML differences..." | |
git config --global --add safe.directory $(realpath .) | |
git diff --exit-code --ignore-cr-at-eol workflow/*.xml | |
- name: Run measure unit tests | |
run: | | |
bundle exec rake test_measures | |
- name: Store code coverage | |
uses: actions/upload-artifact@v4 | |
with: | |
path: coverage | |
name: coverage | |
- name: Store results | |
uses: actions/upload-artifact@v4 | |
with: | |
path: workflow/tests/test_results | |
name: results-unit-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@v4 | |
with: | |
name: documentation | |
path: docs/_build/html/ | |
run-workflow1-tests: | |
runs-on: ubuntu-latest | |
container: | |
image: docker://nrel/openstudio:3.8.0 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.head_ref }} | |
- name: Install software | |
run: | | |
rm -f Gemfile.lock && bundle install | |
- name: Run workflow tests | |
run: | | |
bundle exec rake test_workflow1 | |
- name: Store results | |
uses: actions/upload-artifact@v4 | |
with: | |
path: workflow/tests/test_results | |
name: results-workflow1-tests | |
run-workflow2-tests: | |
runs-on: ubuntu-latest | |
container: | |
image: docker://nrel/openstudio:3.8.0 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.head_ref }} | |
- name: Install software | |
run: | | |
rm -f Gemfile.lock && bundle install | |
- name: Run workflow tests | |
run: | | |
bundle exec rake test_workflow2 | |
- name: Store results | |
uses: actions/upload-artifact@v4 | |
with: | |
path: workflow/tests/test_results | |
name: results-workflow2-tests | |
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" | |
$env:OS_SHA="f953b6fcaf" | |
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\run_simulation.rb -x workflow\sample_files\base.xml --hourly ALL --add-component-loads --add-stochastic-schedules | |
merge-results: | |
runs-on: ubuntu-latest | |
needs: [run-workflow1-tests, run-workflow2-tests, run-unit-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: results-* | |
merge-multiple: true | |
- name: Delete artifacts | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: results-* | |
- name: Merge results | |
run: | | |
mkdir workflow/tests/test_results | |
cp -r test_results/results* workflow/tests/test_results | |
cd workflow/tests | |
pip install pandas | |
for csv in test_results/*1_*.csv; do csv2="${csv/1_/2_}"; csv_out="${csv/1_/_}"; python merge.py $csv $csv2 $csv_out; rm $csv; rm $csv2; done | |
- 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/results*.csv workflow/tests/base_results | |
mkdir workflow/tests/test_results | |
cp -r test_results/results* workflow/tests/test_results | |
pip install numpy | |
pip install pandas | |
pip install plotly | |
pip install kaleido | |
python workflow/tests/compare.py -a results | |
python 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/results* workflow/tests/base_results | |
git add workflow/tests/base_results | |
git status | |
if [[ $(git diff --cached --exit-code) ]]; then | |
git config --global user.email "[email protected]" | |
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 |