Skip to content

Completely Rebuild our CI System #1

Completely Rebuild our CI System

Completely Rebuild our CI System #1

Workflow file for this run

name: Build And Test
on:
push:
branches: [ develop ]
tags:
- 'v*' # Push events matching v*, i.e. v1.0, v20.15.10
pull_request:
branches: [ develop ]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FC: gfortran-13
SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
Python_REQUIRED_VERSION: 3.12.2
shell: bash
jobs:
build_and_test:
runs-on: ${{ matrix.os }}
continue-on-error: false
strategy:
fail-fast: false
matrix:
os: [macos-12, macos-14, ubuntu-latest, windows-2019, windows-latest]
include:
- os: macos-12
macos_dev_target: 12.1
arch: x86_64
python-arch: x64
generator: "Unix Makefiles"
nproc: 3
targets: energyplus ExpandObjects ReadVarsESO Slab Basement AppGPostProcess ParametricPreprocessor
- os: macos-14
macos_dev_target: 13.0
arch: arm64
python-arch: arm64
generator: "Unix Makefiles"
nproc: 3
targets: energyplus ExpandObjects ReadVarsESO Slab Basement AppGPostProcess ParametricPreprocessor
- os: ubuntu-latest
arch: x86_64
python-arch: x64
generator: "Unix Makefiles"
nproc: 4
targets: energyplus ExpandObjects ReadVarsESO Slab Basement AppGPostProcess ParametricPreprocessor
- os: windows-2019
arch: x86_64
python-arch: x64
generator: "Visual Studio 16 2019"
nproc: 4
targets: energyplus ExpandObjects_build ReadVarsESO_build Slab_build Basement_build AppGPostProcess_build ParametricPreprocessor_build
- os: windows-2022
arch: x86_64
python-arch: x64
generator: "Visual Studio 17 2022"
nproc: 4
targets: energyplus ExpandObjects_build ReadVarsESO_build Slab_build Basement_build AppGPostProcess_build ParametricPreprocessor_build
steps:
- name: Set up Python ${{ env.Python_REQUIRED_VERSION }}
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ env.Python_REQUIRED_VERSION }}
- name: Set MacOS Dev Target
run: echo MACOSX_DEPLOYMENT_TARGET=${{ matrix.macos_dev_target }} >> $GITHUB_ENV
# - name: Install System dependencies
# run: |
# set -x
# brew update
# # The MACOSX_DEPLOYMENT_TARGET environment variable sets the default value for the CMAKE_OSX_DEPLOYMENT_TARGET variable.
# # We use cmake commands to build some subprojects, so setting it globally
# echo MACOSX_DEPLOYMENT_TARGET=${{ matrix.macos_dev_target }} >> $GITHUB_ENV
# echo "Installing gcc@13 for gfortran support of -static-libquadmath"
# brew list gcc@13 || brew install gcc@13
# which gfortran-13 || echo "FC=$(brew --prefix gcc@13)/bin/gfortran-13" >> $GITHUB_ENV
# BUILD AND TEST INTEGRATION FILES ON THE BASELINE BRANCH
- name: Baseline Checkout
uses: actions/checkout@v4
with:
ref: develop
path: baseline
- name: Baseline Create Build Directory
run: cmake -E make_directory ./baseline/build/
- name: Baseline Configure CMake
working-directory: ./baseline/build
run: >
cmake
-G "${{ matrix.generator }}"
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${{ matrix.macos_dev_target }}
-DLINK_WITH_PYTHON:BOOL=ON
-DPython_REQUIRED_VERSION:STRING=${{ steps.setup-python.outputs.python-version }}
-DPython_ROOT_DIR:PATH=$RUNNER_TOOL_CACHE/Python/${{ steps.setup-python.outputs.python-version }}/${{ matrix.python-arch }}/
-DBUILD_TESTING:BOOL=ON
-DBUILD_FORTRAN:BOOL=ON
-DBUILD_PACKAGE:BOOL=OFF
-DDOCUMENTATION_BUILD:STRING=DoNotBuild
-DENABLE_OPENMP:BOOL=OFF
-DUSE_OpenMP:BOOL=OFF
../
- name: Baseline Build
working-directory: ./baseline/build
# Building specific target list so that we don't waste time building the unit test binary
run: cmake --build . -j ${{ matrix.nproc }} --config Release --target ${{ matrix.targets }}
- name: Baseline Test
working-directory: ./baseline/build
run: ctest -E Basement -R integration -j 3 # TODO: Speed up basement so we don't have to skip it.
# BUILD AND TEST EVERYTHING ON THE CURRENT BRANCH
- name: Branch Checkout
uses: actions/checkout@v4
with:
path: branch
- name: Branch Create Build Directory
run: cmake -E make_directory ./branch/build/
- name: Branch Configure CMake
working-directory: ./branch/build
run: >
cmake
-G "${{ matrix.generator }}"
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${{ matrix.macos_dev_target }}
-DLINK_WITH_PYTHON:BOOL=ON
-DPython_REQUIRED_VERSION:STRING=${{ steps.setup-python.outputs.python-version }}
-DPython_ROOT_DIR:PATH=$RUNNER_TOOL_CACHE/Python/${{ steps.setup-python.outputs.python-version }}/${{ matrix.python-arch }}/
-DBUILD_TESTING:BOOL=ON
-DBUILD_FORTRAN:BOOL=ON
-DBUILD_PACKAGE:BOOL=OFF
-DDOCUMENTATION_BUILD:STRING=DoNotBuild
-DENABLE_OPENMP:BOOL=OFF
-DUSE_OpenMP:BOOL=OFF
../
- name: Branch Build
working-directory: ./branch/build
run: cmake --build . -j ${{ matrix.nproc }} --config Release
- name: Branch Test
working-directory: ./branch/build
run: ctest -E Basement -j 3
continue-on-error: true # allow unit tests to fail but still try to run regressions next
- name: Install Regression Tool
run: pip install energyplus-regressions # TODO: Not sure if we need to use a different python path here, and we could pip it or clone it
- name: Run Regressions
run: python ./branch/scripts/dev/gha_regressions.py ./baseline/build/testfiles ./branch/build/testfiles/