Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
a3686ca
Update macOS runner version to macos-15
brianlball Dec 18, 2025
a6fef69
Update macOS version check in setup script
brianlball Dec 18, 2025
325c198
Update macOS version check from 13 to 15
brianlball Dec 18, 2025
a0c7978
macos-15-intel GA Runner
brianlball Dec 18, 2025
512564e
3.11.0-rc2
brianlball Jan 5, 2026
93304c8
use OS tag dev-3.11.0-rc2
brianlball Jan 5, 2026
c4088cf
ubuntu 22.04 -> 24.04 bc of mongo change
brianlball Jan 5, 2026
30846b1
CI ubuntu22 to ubuntu24
brianlball Jan 5, 2026
d4810ee
mongo 8 in GA CI setup.sh
brianlball Jan 5, 2026
c01d9cb
3.11.0-rc3 7d1f8bdb36
brianlball Jan 8, 2026
76eadfa
use tag dev-3.11.0-rc3
brianlball Jan 8, 2026
d21b9f5
windows SHA 7112f6a53d
brianlball Jan 8, 2026
98b9ca7
remove dev- tag for container
brianlball Jan 8, 2026
6b4c457
correct windows SHA 7d1f8bdb36
brianlball Jan 8, 2026
9181b57
fix server tests
brianlball Jan 8, 2026
20a0667
appveyor OS install log file
brianlball Jan 9, 2026
66ab831
use /S /D in OS installer instead of install-windows.qs
brianlball Jan 9, 2026
0228c24
update docker_stack_requeue_spec.rb test values
brianlball Jan 9, 2026
b24f491
updated packaged Ruby for 24.04
brianlball Jan 9, 2026
a69c14a
wrong URL
brianlball Jan 9, 2026
1e32af0
untar the new file name
brianlball Jan 9, 2026
e583b16
add libgmp-dev
brianlball Jan 9, 2026
256c167
remove libgmp-dev
brianlball Jan 9, 2026
e87f6c2
gem 'bigdecimal', '~> 3.1'
brianlball Jan 9, 2026
0baf152
bigdecimal = 3.1
brianlball Jan 9, 2026
e6a9d79
debugging output for packaged ruby issue
brianlball Jan 9, 2026
ded9252
remove bigdecimal pin from debug effort
brianlball Jan 13, 2026
8bd3286
OS 3.11.0 release
brianlball Jan 15, 2026
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
14 changes: 7 additions & 7 deletions .github/workflows/openstudio-server-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ on: [push, pull_request]

env:
USE_TESTING_TIMEOUTS: "true"
OPENSTUDIO_VERSION: 3.10.0
OPENSTUDIO_VERSION_SHA: 86d7e215a1
OPENSTUDIO_VERSION: 3.11.0
OPENSTUDIO_VERSION_SHA: 241b8abb4d
OPENSTUDIO_VERSION_EXT: ""
DOCKER_COMPOSE_VERSION: 1.21.1
BUNDLE_WITHOUT: native_ext


jobs:
linux-test:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
Expand Down Expand Up @@ -56,7 +56,7 @@ jobs:
name: openstudio-server-gems-linux
path: build/NREL/export/*.tar.gz
macos-test:
runs-on: macos-13
runs-on: macos-15-intel
steps:
- name: Check out repository
uses: actions/checkout@v4
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
name: openstudio-server-gems-darwin
path: build/NREL/export/*.tar.gz
docker:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
Expand All @@ -105,7 +105,7 @@ jobs:
- name: docker
shell: bash
run: |
export OPENSTUDIO_TAG=3.10.0
export OPENSTUDIO_TAG=3.11.0
sed -i -E "s/.git//g" .dockerignore
docker volume create --name=osdata
docker images --all
Expand All @@ -131,7 +131,7 @@ jobs:
if: |
github.ref == 'refs/heads/master' ||
github.ref == 'refs/heads/develop' ||
github.ref == 'refs/heads/custom_gems'
github.ref == 'refs/heads/3.11.0'
shell: bash
run: ./docker/deployment/scripts/deploy_docker_github_actions.sh
env:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/security-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ on: [push, pull_request]

env:
USE_TESTING_TIMEOUTS: "true"
OPENSTUDIO_VERSION: 3.10.0
OPENSTUDIO_VERSION_SHA: 86d7e215a1
OPENSTUDIO_VERSION: 3.11.0
OPENSTUDIO_VERSION_SHA: 241b8abb4d
OPENSTUDIO_VERSION_EXT: ""
DOCKER_COMPOSE_VERSION: 1.21.1
BUNDLE_WITHOUT: native_ext


jobs:
docker-scan:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@v2
Expand All @@ -31,7 +31,7 @@ jobs:
- name: docker
shell: bash
run: |
export OPENSTUDIO_TAG=3.10.0
export OPENSTUDIO_TAG=3.11.0
sed -i -E "s/.git//g" .dockerignore
docker volume create --name=osdata
docker images --all
Expand Down
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
OpenStudio Server
=================

Version 3.11.0
-------------
* Bumped OpenStudio Server version to 3.11.0.
* Updated CI and build infrastructure to support newer platforms:
* Migrated Ubuntu CI from 22.04 to 24.04.
* Updated macOS runner and version checks to support macOS 15.
* Updated MongoDB version used in CI to 8.x.
* Updated container tags and packaging logic for modern OS targets.
* Updated packaged Ruby and dependency handling for Ubuntu 24.04.
* Adjusted test expectations in docker_stack_requeue_spec.rb to reflect updated behavior.
* Cleaned up legacy Windows install and packaging logic.

Version 3.10.0
-------------
* Custom Gems working again https://github.com/NREL/OpenStudio-server/pull/818
Expand All @@ -11,7 +23,7 @@ Version 3.10.0
* Local Server startup enhancements for PAT https://github.com/NREL/OpenStudio-server/pull/827


Version 3.9.0-rc3
Version 3.9.0
-------------
* 3.9.0 was pulled and several RCs were tried to fix various issues. This was the last RC before we ran out of funding for the release cycle.
* Custom Gems have not worked since Ruby 3 upgrade (3.8.0)
Expand Down
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
# NOTES: Currently this is one big dockerfile and non-optimal.

#may include suffix
ARG OPENSTUDIO_VERSION=3.10.0
FROM nrel/openstudio:3.10.0 AS base
ARG OPENSTUDIO_VERSION=3.11.0
FROM nrel/openstudio:3.11.0 AS base
ARG OPENSTUDIO_VERSION

ENV DEBIAN_FRONTEND=noninteractive
# Install required libaries.
# realpath - needed for wait-for-it
RUN apt-get update && apt-get install -y wget gnupg lsb-release \
&& wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --dearmor | tee /usr/share/keyrings/mongodb-org-6.0-archive-keyring.gpg \
&& echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-org-6.0-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list \
&& wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | gpg --dearmor | tee /usr/share/keyrings/mongodb-org-8.0-archive-keyring.gpg \
&& echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-org-8.0-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
mongodb-org \
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ fundamentals.

The [openstudio_meta](./bin/openstudio_meta) file is a ruby script which provides access to packaging and execution
commands which allow for this codebase to be embedded in applications deployed to computers without docker. Deployment
requires that [MongoDB 6.0.7](https://www.mongodb.com/download-center/community/releases/archive) and [Ruby v2.7](https://www.ruby-lang.org/en/downloads/)
requires that [MongoDB 8.0.12](https://www.mongodb.com/download-center/community/releases/archive) and [Ruby v3.2](https://www.ruby-lang.org/en/downloads/)
are additionally packaged.

The openstudio_meta deployment relies on the `install_gems` command, which uses local system libraries to build all
Expand Down
6 changes: 3 additions & 3 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ image: Visual Studio 2019

environment:
USE_TESTING_TIMEOUTS: "true"
OPENSTUDIO_VERSION: 3.10.0
OPENSTUDIO_VERSION_SHA: 86d7e215a1
OPENSTUDIO_VERSION: 3.11.0
OPENSTUDIO_VERSION_SHA: 241b8abb4d
OPENSTUDIO_VERSION_EXT: ""
OPENSTUDIO_TEST_EXE: C:\projects\openstudio\bin\openstudio.exe
BUILD_TYPE: "test"
Expand All @@ -16,7 +16,7 @@ artifacts:
name: oss.tar.gz

init:
#- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

clone_folder: C:\projects\openstudio-server

Expand Down
46 changes: 0 additions & 46 deletions ci/appveyor/install-windows.qs

This file was deleted.

26 changes: 4 additions & 22 deletions ci/appveyor/setup.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -20,34 +20,16 @@ if %ERRORLEVEL% neq 0 (
dir .

REM “Unblock” the file so Windows does not refuse to execute it
powershell -Command "Unblock-File -Path '%OS_INSTALL_NAME%'"

REM Execute the OpenStudio installer
REM %OS_INSTALL_NAME% --script ci/appveyor/install-windows.qs
REM 3) Run the OpenStudio installer in “quiet” mode, pointing to our QScript
echo Launching installer…
REM Use “.\” to ensure we’re running the downloaded EXE in the current directory
start "" /wait "%OS_INSTALL_NAME%" --script ci/appveyor/install-windows.qs
powershell -Command "Unblock-File -Path '%CD%\%OS_INSTALL_NAME%'"

echo Execute the OpenStudio installer
"%OS_INSTALL_NAME%" /S /D=C:\projects\openstudio
if %ERRORLEVEL% neq 0 (
echo.
echo ERROR: OpenStudio installer "%OS_INSTALL_NAME%" returned error code %ERRORLEVEL%. Aborting.
exit /b 1
)

REM move C:\openstudio C:\projects\openstudio
REM 4) Move the default “C:\openstudio” install directory into the projects dir
if exist C:\openstudio (
move /Y C:\openstudio C:\projects\openstudio
if %ERRORLEVEL% neq 0 (
echo.
echo ERROR: Could not move “C:\openstudio” to “C:\projects\openstudio”. Check permissions.
exit /b 1
)
) else (
echo.
echo ERROR: After running the installer, “C:\openstudio” was not found. Aborting.
exit /b 1
)
dir C:\projects\openstudio

REM Cleanup installer
Expand Down
2 changes: 1 addition & 1 deletion ci/github-actions/install_openstudio.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ OPENSTUDIO_VERSION_EXT="${3:-}"

if [ ! -z ${OPENSTUDIO_VERSION} ] && [ ! -z ${OPENSTUDIO_SHA} ]; then
# OPENSTUDIO_VERSION_EXT may be empty
OPENSTUDIO_DOWNLOAD_FILENAME=OpenStudio-${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_EXT}+${OPENSTUDIO_SHA}-Ubuntu-22.04-x86_64.deb
OPENSTUDIO_DOWNLOAD_FILENAME=OpenStudio-${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_EXT}+${OPENSTUDIO_SHA}-Ubuntu-24.04-x86_64.deb
echo "Installing OpenStudio ${OPENSTUDIO_DOWNLOAD_FILENAME}"
#OPENSTUDIO_DOWNLOAD_BASE_URL=https://openstudio-ci-builds.s3-us-west-2.amazonaws.com/develop
#OPENSTUDIO_DOWNLOAD_BASE_URL=https://github.com/NREL/OpenStudio/releases/download/v3.8.0
Expand Down
34 changes: 20 additions & 14 deletions ci/github-actions/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
set -euo pipefail
echo "The build architecture is ${ImageOS}"

if [ "${ImageOS}" == "ubuntu22" ] && [ "${BUILD_TYPE}" == "docker" ]; then
if [ "${ImageOS}" == "ubuntu24" ] && [ "${BUILD_TYPE}" == "docker" ]; then
echo "Installing docker compose"
sudo rm -f /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
Expand All @@ -14,7 +14,7 @@ if [ "${ImageOS}" == "ubuntu22" ] && [ "${BUILD_TYPE}" == "docker" ]; then

else
# sudo rvm implode --force # rvm PATH rewriting interferes with portable Ruby.
if [ "${ImageOS}" == "macos13" ]; then
if [ "${ImageOS}" == "macos15" ]; then

brew update > $GITHUB_WORKSPACE/spec/files/logs/brew-update.log
brew install pv tree coreutils shared-mime-info
Expand All @@ -33,14 +33,14 @@ else
rm ruby-3.2.2-darwin.tar.gz

# Install mongodb from a download. Brew is hanging and requires building mongo. This also speeds up the builds.
curl -SLO https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-6.0.7.tgz
tar xvzf mongodb-macos-x86_64-6.0.7.tgz
curl -SLO https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-8.0.12.tgz
tar xvzf mongodb-macos-x86_64-8.0.12.tgz
exit_status_tar=$?
if [ $exit_status_tar -ne 0 ]; then
echo "Error: Failed to extract Mongo 6.0.7 archive"
echo "Error: Failed to extract Mongo 8.0.12 archive"
exit $exit_status_tar
fi
sudo cp mongodb-macos-x86_64-6.0.7/bin/* /usr/local/bin/
sudo cp mongodb-macos-x86_64-8.0.12/bin/* /usr/local/bin/
rm -r mongodb-macos*

# Install openstudio -- Use the install script that is in this repo now, the one on OpenStudio/develop has changed
Expand Down Expand Up @@ -83,16 +83,14 @@ else
ulimit -n 4096
ulimit -a

elif [ "${ImageOS}" == "ubuntu22" ]; then
elif [ "${ImageOS}" == "ubuntu24" ]; then
echo "Setting up Ubuntu for unit tests and Rubocop"
# install pipe viewer to throttle printing logs to screen (not a big deal in linux, but it is in osx)
sudo apt-get update && sudo apt-get install -y wget gnupg software-properties-common build-essential
#sudo wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
#echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse | tee /etc/apt/sources.list.d/mongodb-org-6.0.list"
# Import MongoDB public GPG key
sudo wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-org-6.0-archive-keyring.gpg
sudo wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-org-8.0-archive-keyring.gpg
# Add MongoDB to the sources list
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-org-6.0-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-org-8.0-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

sudo apt-get update
sudo apt-get install -y pv tree mongodb-org libqdbm14 libxml2-dev
Expand All @@ -113,8 +111,9 @@ else

# install portable ruby - required for build that will eventually be published
# see https://github.com/NREL/OpenStudio-PAT/wiki/Pat-Build-Notes
curl -SLO --insecure https://openstudio-resources.s3.amazonaws.com/pat-dependencies3/ruby-3.2.2-linux.tar.gz
tar xvzf ruby-3.2.2-linux.tar.gz
#curl -SLO --insecure https://openstudio-resources.s3.amazonaws.com/pat-dependencies3/ruby-3.2.2-linux.tar.gz
curl -SLO --insecure https://openstudio-resources.s3.us-east-1.amazonaws.com/pat-dependencies3/ruby-3.2.2-ubuntu24.04-x86_64.tar.gz
tar xvzf ruby-3.2.2-ubuntu24.04-x86_64.tar.gz
exit_status_tar=$?
if [ $exit_status_tar -ne 0 ]; then
echo "Error: Failed to extract Ruby 3.2.2 archive"
Expand All @@ -124,7 +123,7 @@ else
sudo rm -rf /usr/local/ruby
sudo mv ruby /usr/local/
ldd /usr/local/ruby/bin/ruby
rm ruby-3.2.2-linux.tar.gz
rm ruby-3.2.2-ubuntu24.04-x86_64.tar.gz

mkdir -p reports/rspec
sudo ./ci/github-actions/install_openstudio.sh $OPENSTUDIO_VERSION $OPENSTUDIO_VERSION_SHA $OPENSTUDIO_VERSION_EXT
Expand All @@ -145,6 +144,13 @@ else
# test openssl
ruby ${GITHUB_WORKSPACE}/ci/github-actions/verify_openstudio.rb

#DEBUG shared libraries in packaged ruby
ruby -v
echo "=== RBCONFIG SNAPSHOT ==="
ruby -rrbconfig -e 'p RbConfig::CONFIG.values_at("ruby_version","arch","LIBRUBYARG_SHARED","LIBRUBYARG_STATIC","LIBRUBY_SO","LIBRUBY_A","libdir","rubylibdir","archdir")'
echo "=== /usr/local/ruby/lib ==="
ls -la /usr/local/ruby/lib || true

ruby "${GITHUB_WORKSPACE}/bin/openstudio_meta" install_gems --with_test_develop --debug --verbose --use_cached_gems
bundle -v
# create dir for output files which will be generated in case of failure
Expand Down
8 changes: 4 additions & 4 deletions ci/github-actions/test.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash

# platform-specific config here (also in setup.sh):
if [ "${ImageOS}" == "macos13" ]; then
if [ "${ImageOS}" == "macos15" ]; then
# Dir containing openstudio
export OS_NAME_WITH_PLUS=OpenStudio-${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_EXT}+${OPENSTUDIO_VERSION_SHA}-Darwin-x86_64
export RUBYLIB="$HOME/$OS_NAME_WITH_PLUS/Ruby"
Expand All @@ -11,7 +11,7 @@ if [ "${ImageOS}" == "macos13" ]; then
export GEM_HOME="$GITHUB_WORKSPACE/gems"
export GEM_PATH="$GITHUB_WORKSPACE/gems:$GITHUB_WORKSPACE/gems/bundler/gems"
mongo_dir="/usr/local/bin"
elif [ "${ImageOS}" == "ubuntu22" ]; then
elif [ "${ImageOS}" == "ubuntu24" ]; then
# Dir containing openstudio
export ENERGYPLUS_EXE_PATH=/usr/local/openstudio-${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_EXT}/EnergyPlus/energyplus
export PATH=/usr/local/ruby/bin:/usr/bin:/usr/local/openstudio-${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_EXT}/bin:${PATH}
Expand Down Expand Up @@ -83,14 +83,14 @@ else

# Fix the shebang line in the bundle and bundler scripts
echo "Fixing the shebang line in the bundle and bundler scripts"
if [ "${ImageOS}" == "macos13" ]; then
if [ "${ImageOS}" == "macos15" ]; then
sed -i '' "1s|.*|#!${RUBY_PATH}|" $BUNDLE_PATH
else
sed -i "1s|.*|#!${RUBY_PATH}|" $BUNDLE_PATH
fi

# Remove additional lines added by RubyGems
if [ "${ImageOS}" == "macos13" ]; then
if [ "${ImageOS}" == "macos15" ]; then
sed -i '' '/_=_\\/,/#!\/usr\/bin\/env ruby/d' $BUNDLE_PATH
else
sed -i '/_=_\\/,/#!\/usr\/bin\/env ruby/d' $BUNDLE_PATH
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
version: '3.4'
services:
db:
image: mongo:6.0.7
image: mongo:8.0.12
ports:
- "27017:27017"
deploy:
Expand Down
Loading
Loading