Completely Rebuild our CI System #403
Workflow file for this run
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: Mac Build | |
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 | |
jobs: | |
mac_build_and_test: | |
runs-on: ${{ matrix.os }} | |
continue-on-error: false | |
strategy: | |
fail-fast: false | |
matrix: | |
macos_dev_target: [12.1, 13.0] | |
include: | |
- macos_dev_target: 12.1 | |
os: macos-12 | |
arch: x86_64 | |
python-arch: x64 | |
- macos_dev_target: 13.0 | |
os: macos-14 | |
arch: arm64 | |
python-arch: arm64 | |
steps: | |
# TODO: I assume since we aren't doing any packaging here, we can just use actions/setup-python...but leaving this for now | |
- name: Remove python ${{ env.Python_REQUIRED_VERSION }} from the toolcache | |
run: | | |
ls $RUNNER_TOOL_CACHE/Python || true | |
rm -Rf "$RUNNER_TOOL_CACHE/Python/${{ env.Python_REQUIRED_VERSION }}" | |
rm -Rf "$RUNNER_TOOL_CACHE/Python/${{ env.Python_REQUIRED_VERSION }}*/" | |
- name: Set up Python ${{ env.Python_REQUIRED_VERSION }} | |
id: setup-python | |
uses: jmarrec/setup-python@v5 | |
with: | |
python-version: ${{ env.Python_REQUIRED_VERSION }} | |
- name: Install System dependencies | |
shell: bash | |
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 | |
brew install ninja | |
# 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 | |
shell: bash | |
run: | | |
cmake -G Ninja -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 | |
shell: bash | |
run: ninja | |
- name: Baseline Test | |
working-directory: ./baseline/build | |
shell: bash | |
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 | |
shell: bash | |
run: | | |
cmake -G Ninja -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 | |
shell: bash | |
run: ninja | |
- name: Branch Test | |
working-directory: ./branch/build | |
shell: bash | |
run: ctest -E Basement -j 3 | |
# TODO: Allow this to fail temporarily but continue so that we also get regression results | |
- 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/ | |
# NOW INSTALL THE REGRESSION TOOL AND DO COMPARISONS OF THE INTEGRATION RESULTS | |
# TODO: Add regression builds, as well as use GHA caching to store baseline branch results for efficiency |