Skip to content

Post 24.1 Cleanups #10458

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Apr 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
3b46b63
Add package testing scripts to repo, start adding them to GH workflow
Myoldmopar Apr 2, 2024
70667a1
Simple line to skip setting up CTest dashboard test targets
Myoldmopar Apr 2, 2024
c062f1a
Fix custom check (license text)
Myoldmopar Apr 2, 2024
8fb8324
Turn off lots of CI stuff to free up test builds for 24.1 cleanup
Myoldmopar Apr 2, 2024
1ff2c68
Add deploy to test pypi for wheel build
Myoldmopar Apr 2, 2024
329edd5
Add dependency for the test job
Myoldmopar Apr 2, 2024
64c3cf4
Only attempt to build wheel on linux
Myoldmopar Apr 2, 2024
08e9b37
Add some extra debugging output
Myoldmopar Apr 2, 2024
664f134
Bump pypi upload to see if it helps wheel posts
Myoldmopar Apr 2, 2024
ef7014d
Bump version ID so it will upload to pypi
Myoldmopar Apr 2, 2024
bf92f1b
Tweak the path to the package test runner script
Myoldmopar Apr 2, 2024
aa598ed
Add tmate to investigate
Myoldmopar Apr 2, 2024
d14a548
Add a bit of debugging prints to the test scripts
Myoldmopar Apr 2, 2024
71f8b78
Comment out tmate for a minute
Myoldmopar Apr 2, 2024
040ee1d
Allow relative path, and also try to extract the artifact
Myoldmopar Apr 3, 2024
0e6c542
Cleaning up testing codebase, still more to do
Myoldmopar Apr 3, 2024
a6fc335
Handle MSVC versions better
Myoldmopar Apr 3, 2024
0b206e0
Update Linux release action
Myoldmopar Apr 24, 2024
424652a
Merge remote-tracking branch 'origin/develop' into Post241QuickChanges
Myoldmopar Apr 24, 2024
f32d814
Try explicitly adding to PYTHONPATH so Python will find modules
Myoldmopar Apr 24, 2024
95e8e61
Merge remote-tracking branch 'origin/develop' into Post241QuickChanges
Myoldmopar Apr 24, 2024
fa47f2f
Actually handle missing config file now
Myoldmopar Apr 24, 2024
4d54404
Add Mac installer testing
Myoldmopar Apr 24, 2024
b3543b1
Re-enable tests that had been disabled
Myoldmopar Apr 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
fail-fast: false
matrix:
python-version: ["3.9"]
os: [ubuntu-22.04, macos-13, windows-2019]
os: [ubuntu-22.04] # , macos-13, windows-2019]
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now wheels are only going to work on Linux, and they aren't proper manylinux wheels yet anyway. But it's close. This will be my next major effort.


runs-on: ${{ matrix.os }}

Expand All @@ -45,3 +45,11 @@ jobs:
with:
name: energyplus-wheel-${{ matrix.os }}
path: ./dist

- name: Deploy on Test PyPi
uses: pypa/gh-action-pypi-publish@v1.8.14
with:
repository-url: https://test.pypi.org/legacy/
user: __token__
password: ${{ secrets.TESTPYPIPW }}
verbose: true
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added the command to actually deploy the wheel to PyPi, this is such a great step!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a subsequent effort, I'll modify this script to be able to deploy to either PyPi or TestPyPi on demand, as well as for each tag.

70 changes: 63 additions & 7 deletions .github/workflows/linux_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,16 @@ env:
Python_REQUIRED_VERSION: 3.8

jobs:
linux_release:
build_installer_artifact:
name: Build Installer and Upload # keeping upload in this job so we could potentially download problematic builds
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.allow_failure }}
continue-on-error: false
strategy:
# fail-fast: Default is true, switch to false to allow one platform to fail and still run others
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
include:
- os: ubuntu-20.04
allow_failure: false
- os: ubuntu-22.04
allow_failure: false

permissions:
# Needed permission to upload the release asset
contents: write
Expand Down Expand Up @@ -58,6 +55,8 @@ jobs:
- name: Create Build Directory
run: cmake -E make_directory ./build/

# should we pin to a specific version of CMake here like we did on Windows?

- name: Configure CMake
working-directory: ./build
shell: bash
Expand All @@ -74,6 +73,15 @@ jobs:
shell: bash
run: cmake --build . --target package -j 4

- name: Upload Tarball as artifact for testing
uses: actions/upload-artifact@v4
with:
name: energyplus-${{ matrix.os }}
path: build/EnergyPlus-*-x86_64.tar.gz
if-no-files-found: error
retention-days: 7
overwrite: false

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On all three platforms, I now upload the tarball/zip as an artifact in the first job, and then test the artifact in a fresh container in a second job.

- name: Upload Tarball to release
uses: svenstaro/upload-release-action@v2
with:
Expand Down Expand Up @@ -101,3 +109,51 @@ jobs:
overwrite: true
file_glob: true
asset_name: ${{ matrix.os }}_LinuxShellInstaller


test_package:
name: Test Built Package
needs: build_installer_artifact
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:
name: [20, 22]
include:
- name: 20
os: ubuntu-20.04
test_key: ubuntu2004
- name: 22
os: ubuntu-22.04
test_key: ubuntu2204

steps:
- uses: actions/checkout@v3 # Still need E+ checked out to get testing scripts
with:
path: checkout

- name: Set up Python ${{ env.Python_REQUIRED_VERSION }}
uses: actions/setup-python@v4
id: setup-python
with:
python-version: ${{ env.Python_REQUIRED_VERSION }}
architecture: ${{ matrix.arch }}

- name: Gather Test Package from Artifacts
uses: actions/download-artifact@v4
with:
name: energyplus-${{ matrix.os }}
path: package

- name: Check Contents
shell: bash
run: ls

- name: Check Package contents
shell: bash
working-directory: package
run: ls

- name: Run Package Tests
run: python checkout/scripts/package_tests/runner.py --verbose ${{ matrix.test_key }} package/
70 changes: 68 additions & 2 deletions .github/workflows/mac_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env:
SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

jobs:
mac_release:
build_installer_artifact:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.allow_failure }}
strategy:
Expand All @@ -35,7 +35,7 @@ jobs:
# os: macos-14
# allow_failure: false
# arch: arm64
# python: 3.12.0
# python: 3.12.0 # Make sure to add the package testing below for ARM once we add this build to GHA
permissions:
# Needed permission to upload the release asset
contents: write
Expand Down Expand Up @@ -77,6 +77,8 @@ jobs:
- name: Create Build Directory
run: cmake -E make_directory ./build/

# should we pin to a specific version of CMake here like we did on Windows?

- name: Configure CMake
working-directory: ./build
shell: bash
Expand Down Expand Up @@ -109,6 +111,15 @@ jobs:
otool -L PostProcess/ReadVarsESO || true
otool -L PostProcess/HVAC-Diagram || true
- name: Upload Tarball as artifact for testing
uses: actions/upload-artifact@v4
with:
name: energyplus-${{ matrix.os }}
path: build/EnergyPlus-*-${{ matrix.arch }}.tar.gz
if-no-files-found: error
retention-days: 7
overwrite: false

- name: Upload Tarball to release
uses: svenstaro/upload-release-action@v2
with:
Expand All @@ -126,3 +137,58 @@ jobs:
tag: ${{ github.ref }}
overwrite: true
file_glob: true

test_package:
name: Test Built Package
needs: build_installer_artifact
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:
macos_dev_target: [ 11.6, 12.1 ] #, 13.0]
include:
- macos_dev_target: 11.6
os: macos-11
arch: x86_64
python: 3.8
test_key: mac11
- macos_dev_target: 12.1
os: macos-12
arch: x86_64
python: 3.8
test_key: mac12
# - macos_dev_target: 13.0
# os: macos-14
# arch: arm64
# python: 3.12.0 # Make sure to add the package testing below for ARM once we add this build to GHA

steps:
- uses: actions/checkout@v3 # Still need E+ checked out to get testing scripts
with:
path: checkout

- name: Set up Python ${{ env.Python_REQUIRED_VERSION }}
uses: actions/setup-python@v4
id: setup-python
with:
python-version: ${{ env.Python_REQUIRED_VERSION }}
architecture: ${{ matrix.arch }}

- name: Gather Test Package from Artifacts
uses: actions/download-artifact@v4
with:
name: energyplus-${{ matrix.os }}
path: package

- name: Check Contents
shell: bash
run: ls

- name: Check Package contents
shell: bash
working-directory: package
run: ls

- name: Run Package Tests
run: python checkout/scripts/package_tests/runner.py --verbose ${{ matrix.test_key }} package/
55 changes: 52 additions & 3 deletions .github/workflows/windows_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@ env:
Python_REQUIRED_VERSION: 3.8

jobs:
windows_release:
build_installer_artifact:
name: Build Installer and Upload # keeping upload in this job so we could potentially download problematic builds
runs-on: windows-2019
# to move to windows-2022, just make sure to set the Visual Studio generator build to "17 2022"
continue-on-error: ${{ matrix.allow_failure }}
strategy:
# fail-fast: Default is true, switch to false to allow one platform to fail and still run others
fail-fast: false

# ** NOTE ** If build names/archs/platforms are changed, make sure to update the release job below
matrix:
name: [x64, x64_hardened] # removed x86 because it won't build packages now
include:
Expand Down Expand Up @@ -65,13 +68,12 @@ jobs:
python -m pip install --upgrade pip
pip install aqtinstall


- name: Install System dependencies and LaTeX
shell: bash
run: |
set -x
echo "Downloading MiKTeX CLI installer"
# We download from a specific miror already # TODO: Should store this setup package somewhere ourselves
# We download from a specific mirror already # TODO: Should store this setup package somewhere ourselves
curl -L -O https://ctan.math.illinois.edu/systems/win32/miktex/setup/windows-x64/miktexsetup-5.5.0%2B1763023-x64.zip
unzip miktexsetup-5.5.0%2B1763023-x64.zip

Expand Down Expand Up @@ -142,6 +144,15 @@ jobs:
shell: bash
run: cmake --build . --target package -j 4 --config $BUILD_TYPE

- name: Upload Zip as artifact for testing
uses: actions/upload-artifact@v4
with:
name: energyplus-${{ matrix.package-arch }}
path: build/EnergyPlus-*-Windows-${{ matrix.package-arch }}.zip
if-no-files-found: error
retention-days: 7
overwrite: false
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmarrec for the main build job, I'm just adding the step of uploading the zip as an artifact. I am leaving the rest of it untouched, so it will continue to upload the package to the release as well. If there's a problem with it, so be it, but I thought it was better to let all the installers attempt to upload as normal.


- name: Upload Zip to release
uses: svenstaro/upload-release-action@v2
with:
Expand All @@ -159,3 +170,41 @@ jobs:
tag: ${{ github.ref }}
overwrite: true
file_glob: true

test_package:
name: Test Built Package
needs: build_installer_artifact
runs-on: windows-2019

steps:
- uses: actions/checkout@v3 # Still need E+ checked out to get testing scripts
with:
path: checkout

- name: Set up Python ${{ env.Python_REQUIRED_VERSION }}
uses: actions/setup-python@v4
id: setup-python
with:
python-version: ${{ env.Python_REQUIRED_VERSION }}
architecture: ${{ matrix.arch }}

- name: Gather Test Package from Artifacts
uses: actions/download-artifact@v4
with:
name: energyplus-x86_64
path: package

- name: Check Contents
shell: bash
run: ls

- name: Check Package contents
shell: bash
working-directory: package
run: ls

# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3

- name: Run Package Tests
run: python checkout/scripts/package_tests/runner.py --verbose --msvc 2022 win64 package/
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ if(BUILD_TESTING)
"${CMAKE_SYSTEM_NAME}-${CMAKE_CXX_COMPILER_ID}${ARCH_FLAG}"
CACHE STRING "Identifier for this device configuration")
endif()

set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) # This avoids all the CTest Nightly, Continuous, etc. tests.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simply hush up a bunch of random ctest target projects, no functional change.

enable_testing()
endif()

Expand Down
16 changes: 12 additions & 4 deletions scripts/dev/api_debug_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,21 @@
from sys import exit, path
from tempfile import mkdtemp

DO_BUILD = False

repo_root = Path(__file__).resolve().parent.parent.parent
build_dir = repo_root / 'builds' / 'r'
products_dir = build_dir / 'Products'
file_to_run = repo_root / 'testfiles' / 'PythonPluginCustomOutputVariable.idf'

# this will automatically build E+ each run, so you can quickly make changes and re-execute inside the debugger
check_call(['make', '-j', str(cpu_count() - 2), 'energyplus'], cwd=str(build_dir))
if DO_BUILD:
build_dir = repo_root / 'cmake-build-debug'
products_dir = build_dir / 'Products'
make_tool = '/snap/clion/current/bin/ninja/linux/x64/ninja' # 'make'

# this will automatically build E+ each run, so you can quickly make changes and re-execute inside the debugger
check_call([make_tool, '-j', str(cpu_count() - 2), 'energyplus'], cwd=str(build_dir))
else:
products_dir = '/tmp/EnergyPlus-24.1.0-241fc81186-Linux-Ubuntu22.04-x86_64'

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just random things added to the debug script. I doubt anyone else will be using this, so just ignore.


path.insert(0, str(products_dir))
from pyenergyplus.api import EnergyPlusAPI
Expand Down
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All the remaining changes below are the contents of the ep_testing library that we are using to test EnergyPlus packages!

Empty file.
Empty file.
Loading