Skip to content
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

Post 24.1 Cleanups #10458

Merged
merged 24 commits into from
Apr 29, 2024
Merged
Show file tree
Hide file tree
Changes from 5 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
File renamed without changes.
File renamed without changes.
File renamed without changes.
7 changes: 7 additions & 0 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,10 @@ jobs:
with:
name: energyplus-wheel-${{ matrix.os }}
path: ./dist

- name: Deploy on Test PyPi
uses: pypa/gh-action-pypi-publish@37f50c210e3d2f9450da2cd423303d6a14a6e29f # v1.5.1
with:
repository-url: https://test.pypi.org/legacy/
user: __token__
password: ${{ secrets.TESTPYPIPW }}
46 changes: 43 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,32 @@ jobs:
tag: ${{ github.ref }}
overwrite: true
file_glob: true

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

permissions:
# Needed permission to upload the release asset
contents: write

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: Run Package Tests
run: checkout/scripts/dev/package_tests/runner.py --verbose 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.
115 changes: 115 additions & 0 deletions scripts/package_tests/ep_testing/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University
# of Illinois, The Regents of the University of California, through Lawrence
# Berkeley National Laboratory (subject to receipt of any required approvals
# from the U.S. Dept. of Energy), Oak Ridge National Laboratory, managed by UT-
# Battelle, Alliance for Sustainable Energy, LLC, and other contributors. All
# rights reserved.
#
# NOTICE: This Software was developed under funding from the U.S. Department of
# Energy and the U.S. Government consequently retains certain rights. As such,
# the U.S. Government has been granted for itself and others acting on its
# behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
# Software to reproduce, distribute copies to the public, prepare derivative
# works, and perform publicly and display publicly, and to permit others to do
# so.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# (1) Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# (2) Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# (3) Neither the name of the University of California, Lawrence Berkeley
# National Laboratory, the University of Illinois, U.S. Dept. of Energy nor
# the names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in
# stand-alone form without changes from the version obtained under this
# License, or (ii) Licensee makes a reference solely to the software
# portion of its product, Licensee must refer to the software as
# "EnergyPlus version X" software, where "X" is the version number Licensee
# obtained under this License and may not use a different name for the
# software. Except as specifically required in this Section (4), Licensee
# shall not use in a company name, a product name, in advertising,
# publicity, or other promotional activities any name, trade name,
# trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or
# confusingly similar designation, without the U.S. Department of Energy's
# prior written consent.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.


class OS:
Windows = 1
Linux = 2
Mac = 3


CONFIGURATIONS = {
'ubuntu2004': {
'os': OS.Linux, 'bitness': 'x64', 'asset_pattern': 'Linux-Ubuntu20.04-x86_64.tar.gz', 'os_version': '20.04'
},
'ubuntu2204': {
'os': OS.Linux, 'bitness': 'x64', 'asset_pattern': 'Linux-Ubuntu22.04-x86_64.tar.gz', 'os_version': '22.04'
},
'mac11': {
'os': OS.Mac, 'bitness': 'x64', 'asset_pattern': 'Darwin-macOS11.6-x86_64.tar.gz', 'os_version': '11.6'
},
'mac12': {
'os': OS.Mac, 'bitness': 'x64', 'asset_pattern': 'Darwin-macOS12.1-x86_64.tar.gz', 'os_version': '12.1'
},
'mac12-arm64': {
'os': OS.Mac, 'bitness': 'arm64', 'asset_pattern': 'Darwin-macOS12.1-arm64.tar.gz', 'os_version': '12'
},
'mac13-arm64': {
'os': OS.Mac, 'bitness': 'arm64', 'asset_pattern': 'Darwin-macOS13-arm64.tar.gz', 'os_version': '13'
},
'win32': {
'os': OS.Windows, 'bitness': 'x32', 'asset_pattern': 'Windows-i386.zip', 'os_version': '10'
},
'win64': {
'os': OS.Windows, 'bitness': 'x64', 'asset_pattern': 'Windows-x86_64.zip', 'os_version': '10'
},
'win64-2022server': {
'os': OS.Windows, 'bitness': 'x64', 'asset_pattern': 'Windows-x86_64.zip', 'os_version': '2022'
},
}


class TestConfiguration:

def __init__(self, run_config_key: str, this_version: str, last_version: str, last_tag: str, msvc_version=None):

# invalid keys are protected in the command's finalize_options method
this_config = CONFIGURATIONS[run_config_key]
self.os_version = this_config['os_version']
self.os = this_config['os']
self.msvc_version = None
if msvc_version is not None:
self.msvc_version = msvc_version
elif self.os == OS.Windows and self.os_version == '2022':
self.msvc_version = 17
elif self.os == OS.Windows:
self.msvc_version = 16
self.asset_pattern = this_config['asset_pattern']
self.bitness = this_config['bitness']

self.this_version = this_version
# self.tag_this_version = 'v24.1.0-RC2'
self.last_version = last_version
self.tag_last_version = last_tag
Loading
Loading