github StackStorm/st2 v3.9.0
3.9.0 - October 10, 2025

23 hours ago

Python 3.6 is no longer supported; Stackstorm requires at least Python 3.8.
This release adds support for Python 3.10 and 3.11, so StackStorm supports python 3.8 - 3.11.

Newer MongoDB versions are now supported. CI uses MongoDB 7.0.

Several st2.conf database options have been renamed or deprecated. Most of the options will continue to work using their old name.
However, if you use [database].ssl_keyfile and/or [database].ssl_certfile, you MUST migrate to [database].tls_certificate_key_file.
This new option expects the key and certificate in the same file. Use something like the following to create that file from your old files:

cat path/to/ssl_keyfile path/to/ssl_certfile > path/to/tls_certificate_key_file

Other options that were renamed under [database] are (more details available in st2.conf.sample):

  • ssl -> tls
  • ssl_cert_reqs -> tls_allow_invalid_certificates (opt type change: string -> boolean)
  • ssl_ca_certs -> tls_ca_file
  • ssl_match_hostnames -> tls_allow_invalid_hostnames (meaning is inverted: the new option is the opposite of the old)

Fixed

  • Fixed #6021 and #5327 by adding max_page_size to api_opts and added limit and offset to list_values() methods of
    both action_service and sensor_service
  • Fix packs.get action. Assumed master is primary branch on all packs. #6225
  • Restore Pack integration testing (it was inadvertently skipped) and stop testing against bionic and el7. #6135
  • Fix Popen.pid typo in st2tests. #6184
  • Bump tooz package to 6.2.0 to fix TLS. #6220 (@jk464)
  • Shells via pywinrm are initialized with the 65001 codepage to ensure raw string responses are UTF-8. #6034 (@Stealthii)

Changed

  • Removed code in all dist_utils.py that was sanitizing the python_version environment marker that limited packages in the requirements.txt only being installed on lower python versions. (by @skiedude)

  • Bumped jsonschema 2.6.0 -> 3.2.0 now that python3.6 is not supported. #6118

  • Bumped many deps based on the lockfiles generated by pants+pex. #6181 #6227 #6200 #6252 #6268 #6329 (by @cognifloyd and @nzlosh)

  • Switch to python3's standard lib unittest from unittest2, a backport of python3 unittest features for python2. #6187 (by @nzlosh)

  • Drop Python 3.6 testing in CircleCI. #6080
    Contributed by (@philipphomberger Schwarz IT KG)

  • Refactor tools/launchdev.sh to use tmux instead of screen. #6186 (by @nzlosh and @cognifloyd)

  • Updated package build container environment to use py3.8 and mongo4.4 #6129

  • Fix misc DeprecationWarnings to prepare for python 3.10 support. #6188 (by @nzlosh)

  • Update st2client deps: editor and prompt-toolkit. #6189 (by @nzlosh)

  • Updated dependency oslo.config to prepare for python 3.10 support. #6193 (by @nzlosh)

  • Updated unit tests to use redis for coordination instead of the NoOp driver. This will hopefully make CI more stable. #6245
    Contributed by @FileMagic, @guzzijones, and @cognifloyd

  • Renamed [database].ssl* options to support pymongo 4, which we have to update to support newer MongoDB servers.
    Please see the note above about migrating to the newer options, especially if you use [database].ssl_keyfile
    and/or [database].ssl_certfile, as those options are ignored in StackStorm 3.9.0. #6250
    Contributed by @cognifloyd

  • Update mongoengine to 0.29 and pymongo to 4.6.3. The pymongo bump (from 3.x to 4.x) is a major update. #6252
    Contributed by @cognifloyd

  • Update CI from testing with mongo 4.4 to testing with MongoDB 7.0. #6246
    Contributed by @guzzijones

  • Relaxed dnspython pinning for compatibility with python 3.10 and greater. #6265
    Contributed by @nzlosh

  • Switched tests from nosetest to pytest. st2-run-pack-tests also uses pytest.
    So, all pack tests must be runnable by pytest, which may require migration. #6291
    Contributed by @nzlosh, @FileMagic, @guzzijones, and @cognifloyd. Pinned pytest-cov
    to 5.0.0 for python 3.8 support.

  • Migrated github actions from image ubunutu 20.04 with python 3.8.10 to image ubuntu 22.04 with python 3.8.12. #6301
    Contributed by @nzlosh

  • Regenerate pants lockfiles and drop passlib requirement. #6350
    Contributed by @nzlosh

Added

  • Continue introducing pants <https://www.pantsbuild.org/docs>_ to improve DX (Developer Experience)
    working on StackStorm, improve our security posture, and improve CI reliability thanks in part
    to pants' use of PEX lockfiles. This is not a user-facing addition.
    #6118 #6141 #6133 #6120 #6181 #6183 #6200 #6237 #6229 #6240 #6241 #6244 #6251 #6253
    #6254 #6258 #6259 #6260 #6269 #6275 #6279 #6278 #6282 #6283 #6273 #6287 #6306 #6307
    #6311 #6314 #6315 #6317 #6319 #6312 #6320 #6321 #6323 #6324 #6325 #6326 #6327 #6328
    #6329 #6330 #6337 #6356
    Contributed by @cognifloyd

  • Build of ST2 EL9 packages #6153
    Contributed by @amanda11

  • Ensure .pth files in the st2 virtualenv get loaded by pack virtualenvs. #6183
    Contributed by @cognifloyd

  • Allow st2-rule-tester to run without a mongo connection if user is testing against local rule/trigger-instance files. #6208
    Contributed by @jk464

  • Added a get_result method to the ExecutionResourceManager Class for st2client
    Contributed by @skiedude

  • Added new env var for tests: ST2TESTS_SYSTEM_USER. When set, this will override system_user.user in st2 conf
    so that you can run tests on systems that do not have the stanley user. When running tests locally, use the
    following to set system user to the current user: export ST2TESTS_SYSTEM_USER=$(id -un) #6242
    Contributed by @cognifloyd

  • Added experimental support for setting conf vars via environment variables. All settings in st2.conf can be
    overriden via enviornment vars in the format: ST2_<conf section>__<option name> (env vars are upper cased)
    For example, the [database].password setting in st2.conf could be overriden using ST2_DATABASE__PASSWORD.
    This new feature is based on oslo_config's environment support, but patches it to use the ST2_ prefix.
    If you experience any issues when using this experimental feature, please file an issue. #6277
    Contributed by @cognifloyd

  • Add new option [messaging].prefix to configure the prefix used in RabbitMQ exchanges and queues.
    The default is st2 (resulting in exchange names like st2.execution and st2.sensor).
    This is primarily designed to support safely running tests in parallel where creating a vhost for
    each parallel test run would be a maintenance burden. #6282
    Contributed by @cognifloyd

  • Add python 3.10 and 3.11 to the GitHub Actions test matrix.
    Contributed by @nzlosh, @guzzijones12, and @cognifloyd

  • Copy systemd files and rpm/deb scriptlets from st2-packages.git for future packaging via pants. #6303 #6313
    Cherry-picked by @cognifloyd

  • Cherry-pick changes to runners.sh from st2-packages git repo. #6302
    Cherry-picked by @cognifloyd

  • Pinned DOCKER_API_VERSION in the circleci build to make sure the docker-cli api version does not exceed what
    cicrleci docker24 <https://circleci.com/docs/guides/execution-managed/building-docker-images/>_ supports

Don't miss a new st2 release

NewReleases is sending notifications on new releases.