Chapter 29Lesson 03~125 minutes

Release Cycle, LTA Strategy, Upgrade Paths, and Migration Planning: Configuration, Design Patterns, and Trade-Offs

Choose LTA versus current release, replacement versus in-place deployment, scanner/plugin timing, and staged rollout from compatibility, rollback and operational evidence.

Release StrategyLTA / CurrentUpgrade PathsMigrationRollback

Learning objectives

  • Choose commercial LTA or current release intentionally instead of applying Community Build terminology to Server.
  • Compare replacement-instance and in-place strategies with explicit database and rollback boundaries.
  • Sequence scanner and plugin changes so one migration variable can be diagnosed at a time.
  • Choose staged validation over big-bang rollout for APIs, CI, IDE and analyzer behavior.
  • Use deprecation and compatibility evidence to decide whether to remove, upgrade, or replace an integration.

1. Design principle: reduce simultaneous unknowns

Updates fail most expensively when several layers change at once. If the SonarQube version, database engine, Java major, OS image, plugins, scanners and CI integration all change in one maintenance window, a failure has too many plausible causes. A strong migration plan separates required dependencies from optional modernization and records a validation gate after each meaningful step.

2. LTA versus latest release

For commercial SonarQube Server, the current release receives new features/enhancements/patches, while the current LTA receives longer-lived vulnerability/blocker fixes and support. An organization may choose LTA to reduce feature-change frequency or current releases to adopt features sooner. Neither choice removes the need to apply supported patches.

For Community Build, do not write an “LTA strategy.” There is no Community Build LTA. Use the calendar-version update rules and decide how quickly your organization follows current monthly releases.

Need Likely strategy Evidence to retain
Commercial production favors longer-lived baseline Current Server LTA + supported patches LTA identity, patch level, support window, update notes
Commercial team needs latest capabilities Current Server release stream Latest/latest-1 status, compatibility rehearsal, faster cadence
Free Community Build Calendar releases; no LTA Current version, same-year/year-bridge path, release notes

3. Replacement instance versus in-place host

Fresh distribution/container

Preferred pattern. Keep configuration declarative, install only target-compatible plugins, point the target at a rehearsal/restored DB, and preserve the old deployment definition for rollback.

In-place host mutation

Can reduce infrastructure cost but increases coupling to stale files, old plugins and service paths. Current ZIP guidance explicitly uses a fresh directory rather than overwriting the old home.

Even with a replacement container, the database migration is still stateful. Blue/green server containers do not make a shared migrated database simultaneously compatible with old and new binaries.

4. Scanner upgrades before or after the server?

Do not automatically upgrade every scanner in the same commit as the server. First inventory scanner versions and JRE auto-provisioning. Current SonarScanner CLI baseline is 8.1.0.6389. When auto-provisioning is enabled on supported scanners, runtime management is simpler; when it is disabled, current scanner guidance requires modern Java, with Java 17 support already ended/deprecated in 2026.

A practical staged pattern is: prove representative existing scanners against the target, then upgrade obsolete scanner versions in a separate controlled change where required. This isolates “server migration problem” from “scanner/toolchain migration problem.”

5. Plugin removal/update strategy

Every third-party plugin is executable server-side supply-chain state. Before the server update, classify each plugin as built-in replacement available, target-compatible, update required, or remove. Never copy the old extensions/plugins directory wholesale into the target. Use the current version matrix and provenance checks from Chapter 26.

plugin_key | source_version | target_compatible_version | action | rollback_artifact
-----------|----------------|---------------------------|--------|------------------
example    | 1.x            | none                      | remove | source JAR checksum
example2   | 2.x            | 3.x                       | update | both pinned JARs

6. Staged versus big-bang rollout

A staged update separates at least four acceptance planes:

  1. Infrastructure: target starts, DB migration completes, health/logs acceptable.
  2. Analysis: representative project uploads and target ceTaskId succeeds.
  3. Policy: issues/metrics/gate/new-code results are understood, especially if bundled analyzers changed.
  4. Automation: Web API, webhook, CI, provider decoration and IDE Connected Mode dependencies still work.

Only after these planes pass should the migration be accepted. Data Center rollouts add cluster coordination and belong to Chapter 30.

7. Web API V2 and deprecation debt

Chapter 23 established that Web API V2 is an endpoint-by-endpoint transition. An update plan must inventory actual endpoints and inspect deprecation evidence, not globally rewrite /api/... to /api/v2/.... Current post-update guidance explicitly tells operators to review deprecated Web API endpoint/parameter usage.

Treat an API deprecation as migration backlog with an owner and target release. Do not wait for a future release to remove the endpoint during the maintenance window.

8. Worked decision table

Scenario Choice Prerequisite Observable proof
Commercial team values low feature churn Track current LTA patches Server license/support + LTA path review Version/LTA status, patch notes, rehearsal
Community Build 26.7 → 26.9 Direct same-year update Read 26.8/26.9 notes; target requirements pass Clone migration + post-update ceTaskId
Old plugin has no compatible target Remove before migration or replace integration Confirmed ownership/usage Staging startup and representative analysis
CI scanner is old but currently works Validate server first; upgrade scanner separately if needed Compatibility supported Old scanner test, then separate scanner change
Critical API is deprecated Migrate automation before target removal release Replacement endpoint documented Dual-path/contract test and deprecation log cleanup

Knowledge check

Should a Community Build operator choose between LTA and current?

Why prefer a fresh ZIP directory/image over copying the old installation wholesale?

Why stage scanner changes separately when possible?

What makes a deprecated API an update risk?

Can two server versions safely share a database after the newer one migrates it?

Next lesson

Diagnose migration failures without destroying rollback evidence

Lesson 4 engineers unsupported paths, plugin failures, schema rollback mistakes, deprecations and multi-variable production failures.

Official references and version notes

Version and compatibility note

Rechecked 2026-09-08. Mandatory examples rehearse SonarQube Community Build 26.7.0.124771 → 26.9.0.129388. The current target is Community Build 26.9.0.129388 using official sonarqube:26.7.0.124771-community and sonarqube:26.9.0.129388-community images, PostgreSQL 17.11, and SonarScanner CLI 8.1.0.6389. Both Community Build versions are in calendar year 2026, so the current update-path rule permits a direct update; learners still read the 26.8 and 26.9 release/update notes before execution. Current commercial references are SonarQube Server 2026 Release 4.1 and 2026.1.5 LTA. Community Build has no LTA concept. ZIP-hosted current SonarQube requires Java 21 or 25; the Docker lab uses the image-bundled runtime. Current Community Build supports PostgreSQL 14–18. Recheck exact release notes, target host/database requirements, plugins, scanners, API deprecations, and integrations immediately before any real update.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0Send only Ethereum/ERC-20 compatible assets to this address.