diff --git a/sentry_sdk/utils.py b/sentry_sdk/utils.py index 29827db44e..60edafd2d1 100644 --- a/sentry_sdk/utils.py +++ b/sentry_sdk/utils.py @@ -155,7 +155,8 @@ def get_default_release() -> "Optional[str]": return release for var in ( - "HEROKU_SLUG_COMMIT", + "HEROKU_BUILD_COMMIT", + "HEROKU_SLUG_COMMIT", # deprecated by Heroku, kept for backward compatibility "SOURCE_VERSION", "CODEBUILD_RESOLVED_SOURCE_VERSION", "CIRCLE_SHA1", diff --git a/tests/test_utils.py b/tests/test_utils.py index d703e62f3a..d75e514212 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -721,6 +721,36 @@ def test_get_default_release_other_release_env(monkeypatch): assert release == "other-env-release" +def test_get_default_release_heroku_build_commit(monkeypatch): + monkeypatch.setenv("HEROKU_BUILD_COMMIT", "heroku-build-commit-sha") + + with mock.patch("sentry_sdk.utils.get_git_revision", return_value=""): + release = get_default_release() + + assert release == "heroku-build-commit-sha" + + +def test_get_default_release_heroku_slug_commit_fallback(monkeypatch): + # Although deprecated by Heroku, HEROKU_SLUG_COMMIT should still be used if HEROKU_BUILD_COMMIT is not set + monkeypatch.setenv("HEROKU_SLUG_COMMIT", "heroku-slug-commit-sha") + + with mock.patch("sentry_sdk.utils.get_git_revision", return_value=""): + release = get_default_release() + + assert release == "heroku-slug-commit-sha" + + +def test_get_default_release_heroku_build_commit_takes_priority(monkeypatch): + # HEROKU_BUILD_COMMIT should take priority over HEROKU_SLUG_COMMIT since it's the non-deprecated variable + monkeypatch.setenv("HEROKU_BUILD_COMMIT", "heroku-build-commit-sha") + monkeypatch.setenv("HEROKU_SLUG_COMMIT", "heroku-slug-commit-sha") + + with mock.patch("sentry_sdk.utils.get_git_revision", return_value=""): + release = get_default_release() + + assert release == "heroku-build-commit-sha" + + def test_ensure_integration_enabled_integration_enabled(sentry_init): def original_function(): return "original"