diff --git a/.decent_ci-Linux.yaml b/.decent_ci-Linux.yaml new file mode 100644 index 00000000000..e0872c4a609 --- /dev/null +++ b/.decent_ci-Linux.yaml @@ -0,0 +1,35 @@ +compilers: + - name: "gcc" + version: "11.4" + cmake_extra_flags: -DLINK_WITH_PYTHON:BOOL=ON -DPython_REQUIRED_VERSION:STRING=3.12.2 -DPython_ROOT_DIR:PATH=~/.pyenv/versions/3.12.2/ -DBUILD_FORTRAN:BOOL=ON -DBUILD_TESTING:BOOL=ON -DENABLE_GTEST_DEBUG_MODE:BOOL=OFF -DBUILD_PERFORMANCE_TESTS:BOOL=ON -DVALGRIND_ANALYZE_PERFORMANCE_TESTS:BOOL=ON -DENABLE_PCH:BOOL=OFF + collect_performance_results: true + skip_regression: true + s3_upload_bucket: energyplus + + - name: "gcc" + version: "11.4" + build_type: RelWithDebInfo + cmake_extra_flags: -DLINK_WITH_PYTHON:BOOL=ON -DPython_REQUIRED_VERSION:STRING=3.12.2 -DPython_ROOT_DIR:PATH=~/.pyenv/versions/3.12.2/ -DBUILD_FORTRAN:BOOL=ON -DBUILD_TESTING:BOOL=ON -DENABLE_REGRESSION_TESTING:BOOL=OFF -DCOMMIT_SHA:STRING=$COMMIT_SHA -DENABLE_COVERAGE:BOOL=ON -DENABLE_GTEST_DEBUG_MODE:BOOL=OFF -DENABLE_PCH:BOOL=OFF + coverage_enabled: true + coverage_base_dir: src/EnergyPlus + coverage_pass_limit: 41.0 + coverage_warn_limit: 40.0 + coverage_s3_bucket: energyplus + build_tag: UnitTestsCoverage + ctest_filter: -E "integration.*" + skip_regression: true + skip_packaging: true + + - name: "gcc" + version: "11.4" + build_type: RelWithDebInfo + cmake_extra_flags: -DLINK_WITH_PYTHON:BOOL=ON -DPython_REQUIRED_VERSION:STRING=3.12.2 -DPython_ROOT_DIR:PATH=~/.pyenv/versions/3.12.2/ -DBUILD_FORTRAN:BOOL=ON -DBUILD_TESTING:BOOL=ON -DENABLE_REGRESSION_TESTING:BOOL=OFF -DCOMMIT_SHA:STRING=$COMMIT_SHA -DENABLE_COVERAGE:BOOL=ON -DENABLE_GTEST_DEBUG_MODE:BOOL=OFF -DENABLE_PCH:BOOL=OFF + coverage_enabled: true + coverage_base_dir: src/EnergyPlus + coverage_pass_limit: 66.0 + coverage_warn_limit: 67.0 + coverage_s3_bucket: energyplus + build_tag: IntegrationCoverage + ctest_filter: -R "integration.*" + skip_regression: true + skip_packaging: true diff --git a/.decent_ci-Windows.yaml b/.decent_ci-Windows.yaml new file mode 100644 index 00000000000..496d53df1f3 --- /dev/null +++ b/.decent_ci-Windows.yaml @@ -0,0 +1,6 @@ +compilers: + - name: Visual Studio + version: 16 + architecture: Win64 + cmake_extra_flags: -DBUILD_FORTRAN:BOOL=ON -DBUILD_TESTING:BOOL=ON -DCOMMIT_SHA=%COMMIT_SHA% -DENABLE_GTEST_DEBUG_MODE:BOOL=OFF -DLINK_WITH_PYTHON=ON -DPython_EXECUTABLE:PATH=C:/Users/elee/AppData/Local/Programs/Python/Python312/python.exe + skip_regression: true diff --git a/.decent_ci.yaml b/.decent_ci.yaml new file mode 100644 index 00000000000..011ef0a2485 --- /dev/null +++ b/.decent_ci.yaml @@ -0,0 +1,12 @@ +results_repository : Myoldmopar/EnergyPlusBuildResults +results_path : _posts +results_base_url : https://myoldmopar.github.io/EnergyPlusBuildResults +regression_repository : NREL/EnergyPlusRegressionTool +regression_branch : BumpToBoto3 # this is the branch of NREL/EnergyPlusRegressionTool to use (usually main) +regression_baseline_default : develop # this is the NREL/EnergyPlus branch to use as the baseline for regressions +regression_baseline_develop : "" +regression_baseline_master : "" +notification_recipients: + - myoldmopar +aging_pull_requests_notification: true +aging_pull_requests_numdays: 28 diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 00000000000..7f310775eb4 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,63 @@ +# Overview + +This folder is, of course, where our GitHub Action workflows live. +I made a significant effort to pull us completely over from Decent CI to GitHub Actions, in PR #10683. +While everything looked good in testing, it seems the number of CI runs was too much for the NREL org. +I reverted it right away, and am going to retry later, probably with the help of some self-hosted runners. +This README is really just a place to drop current status while I figure out what to add back in next. + +# Current Configuration + +- build_checksums.yml + - Runs on demand or on branches named "checksum" +- build_documentation.yml + - Runs on Windows and Linux to test MikTeX and TeXLive + - Linux takes 5 minutes and Windows takes 9 minutes +- build_wheels.yml + - Runs on demand, on Linux only for now +- release_*.yml + - Only works on tags + - Runs on all three platforms +- test_code_integrity.yml + - Runs on Linux, about 22 minutes +- test_debug_builds.yml + - Currently not running at all because of runtime + - Maybe push these onto self-hosted runners soon +- test_develop_commits.yml + - Only running Mac builds, as they are fast + - Then maybe push these onto self-hosted runners for Windows and Ubuntu +- test_epjson.yml + - Currently running just on Windows to save CI time + - In the future, probably expand it back out to all platforms + - Approximately 3 minute runtime +- test_pull_requests.yml + - In this PR I am adding Mac builds back in with new regressions + - In the future expand these onto self-hosted runners for Windows and Ubuntu +- verify_pr_labels.yml + - Runs on Linux, and less than a minute + +Thus for a typical PR push, it will start up: + +- Documentation - Windows: 9 minutes +- Documentation - Linux: 5 minutes +- Code integrity - Linux: 22 minutes +- EpJSON - Windows: 3 minutes +- PR Labeling - Linux: 1 minute +- Test PR Including Regressions - Mac: 49 minutes + +Which is a total of Windows: 12 minutes, Linux: 38 minutes, Mac: 49 minutes. + +Decent CI will be supplementing with: + +- Linux Debug Unit Test Coverage +- Linux Debug Integration Test Coverage +- Linux Release Build and Test Without Regressions +- Windows Release Build and Test Without Regressions + +# TODO + +- Could add some logic in the documentation workflow to only run if docs changed + - on: push: paths: '**.tex' + - But...we would also want to consider other changes that affect docs, like CMake config, versioning, etc. +- Get all docs to ReadTheDocs and eliminate our TeX entirely................................. +- Set up Self-Hosted runners and see how that goes diff --git a/.github/workflows/test_code_integrity.yml b/.github/workflows/disabled_test_code_integrity.yml.txt similarity index 100% rename from .github/workflows/test_code_integrity.yml rename to .github/workflows/disabled_test_code_integrity.yml.txt diff --git a/.github/workflows/test_debug_builds.yml b/.github/workflows/disabled_test_debug_builds.yml.txt similarity index 100% rename from .github/workflows/test_debug_builds.yml rename to .github/workflows/disabled_test_debug_builds.yml.txt diff --git a/.github/workflows/test_develop_commits.yml b/.github/workflows/test_develop_commits.yml index e7669111172..849f171c4e5 100644 --- a/.github/workflows/test_develop_commits.yml +++ b/.github/workflows/test_develop_commits.yml @@ -21,14 +21,14 @@ jobs: fail-fast: false matrix: include: - - os: macos-12 - macos_dev_target: 12.1 - arch: x86_64 - python-arch: x64 - generator: "Unix Makefiles" - nproc: 3 - pretty: "Standard Build on Mac x64" - alternate: false +# - os: macos-12 +# macos_dev_target: 12.1 +# arch: x86_64 +# python-arch: x64 +# generator: "Unix Makefiles" +# nproc: 3 +# pretty: "Standard Build on Mac x64" +# alternate: false - os: macos-14 macos_dev_target: 13.0 arch: arm64 @@ -37,34 +37,34 @@ jobs: nproc: 3 pretty: "Standard Build on Mac arm64" alternate: false - - os: ubuntu-24.04 - arch: x86_64 - python-arch: x64 - generator: "Unix Makefiles" - nproc: 4 - pretty: "Standard Build on Ubuntu 24.04" - alternate: false - - os: windows-2019 - arch: x86_64 - python-arch: x64 - generator: "Visual Studio 16 2019" - nproc: 4 - pretty: "Windows VS 2019" - alternate: false - - os: windows-2022 - arch: x86_64 - python-arch: x64 - generator: "Visual Studio 17 2022" - nproc: 4 - pretty: "Standard Build on Windows VS 2022" - alternate: false - - os: ubuntu-24.04 - arch: x86_64 - python-arch: x64 - generator: "Unix Makefiles" - nproc: 4 - pretty: "Alternate Build on Ubuntu 24.04" - alternate: true +# - os: ubuntu-24.04 +# arch: x86_64 +# python-arch: x64 +# generator: "Unix Makefiles" +# nproc: 4 +# pretty: "Standard Build on Ubuntu 24.04" +# alternate: false +# - os: windows-2019 +# arch: x86_64 +# python-arch: x64 +# generator: "Visual Studio 16 2019" +# nproc: 4 +# pretty: "Windows VS 2019" +# alternate: false +# - os: windows-2022 +# arch: x86_64 +# python-arch: x64 +# generator: "Visual Studio 17 2022" +# nproc: 4 +# pretty: "Standard Build on Windows VS 2022" +# alternate: false +# - os: ubuntu-24.04 +# arch: x86_64 +# python-arch: x64 +# generator: "Unix Makefiles" +# nproc: 4 +# pretty: "Alternate Build on Ubuntu 24.04" +# alternate: true steps: diff --git a/.github/workflows/test_epjson.yml b/.github/workflows/test_epjson.yml index 97ce25a0959..12aebf2c2bc 100644 --- a/.github/workflows/test_epjson.yml +++ b/.github/workflows/test_epjson.yml @@ -12,19 +12,8 @@ env: jobs: release: - name: Testing on ${{ matrix.pretty }} - runs-on: ${{ matrix.os }} - strategy: - # fail-fast: Default is true, switch to false to allow one platform to fail and still run others - fail-fast: false - matrix: - include: - - os: ubuntu-latest - pretty: "Ubuntu" - - os: windows-latest - pretty: "Windows" - - os: macos-latest - pretty: "Mac" + name: Testing on Windows + runs-on: windows-latest steps: - uses: actions/checkout@v4 @@ -34,24 +23,13 @@ jobs: with: python-version: '3.10' - - name: Setup + - name: Install Pip Stuff shell: bash - run: | - cmake -E make_directory ./build/ - if [ "$RUNNER_OS" == "Windows" ]; then - echo "Setting CMAKE_GENERATOR options equivalent to ='-G \"Visual Studio 17 2022\" -A x64'" - echo CMAKE_GENERATOR='Visual Studio 17 2022' >> $GITHUB_ENV - echo CMAKE_GENERATOR_PLATFORM=x64 >> $GITHUB_ENV - choco install ninja - elif [ "$RUNNER_OS" == "macOS" ]; then - echo MACOSX_DEPLOYMENT_TARGET=12.1 >> $GITHUB_ENV - fi; - pip install pytest pytest-timeout + run: pip install pytest pytest-timeout - name: Configure CMake - working-directory: ./build - run: | - cmake ../ + working-directory: ./build # TODO: Wait...it will automatically create it? + run: cmake -G "Visual Studio 17 2022" -A x64 ../ - name: Test epjson shell: python @@ -123,5 +101,4 @@ jobs: - name: Run idd_schema pytests working-directory: ./build - run: | - pytest --verbose ../idd + run: pytest --verbose ../idd diff --git a/.github/workflows/test_pull_requests.yml b/.github/workflows/test_pull_requests.yml index 8f58f736b18..1a3fc03c513 100644 --- a/.github/workflows/test_pull_requests.yml +++ b/.github/workflows/test_pull_requests.yml @@ -2,7 +2,7 @@ name: Build and Test on: pull_request: - branches: [ develop ] # TODO: Run this on any PR, and compare to baseline branch, not necessarily develop. Also perhaps non-draft PRs only. + branches: [ develop ] defaults: run: @@ -31,20 +31,20 @@ jobs: nproc: 3 run_regressions: true pretty: "Mac arm64" - - os: ubuntu-24.04 - arch: x86_64 - python-arch: x64 - generator: "Unix Makefiles" - nproc: 4 - run_regressions: false - pretty: "Ubuntu 24.04" - - os: windows-2022 - arch: x86_64 - python-arch: x64 - generator: "Visual Studio 17 2022" - nproc: 4 - run_regressions: false - pretty: "Windows x64" +# - os: ubuntu-24.04 +# arch: x86_64 +# python-arch: x64 +# generator: "Unix Makefiles" +# nproc: 4 +# run_regressions: false +# pretty: "Ubuntu 24.04" +# - os: windows-2022 +# arch: x86_64 +# python-arch: x64 +# generator: "Visual Studio 17 2022" +# nproc: 4 +# run_regressions: false +# pretty: "Windows x64" steps: