Skip to content

Commit f9a01e6

Browse files
authored
Merge pull request #377 from miharp/docs/sbom-server-tables-363
Source the server and OpenVoxDB component tables from SBOMs
2 parents c4cfa87 + ea75b69 commit f9a01e6

4 files changed

Lines changed: 53 additions & 50 deletions

File tree

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
---
2+
- release: 8.14.1
3+
jetty: 12.1.10
24
- release: 8.14.0
5+
jetty: 12.1.10
36
- release: 8.13.0
7+
jetty: 10.0.26
48
- release: 8.12.1
9+
jetty: 10.0.26
510
- release: 8.12.0
11+
jetty: 10.0.26

_data/server_release_contents/openvox_8x.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
---
2+
- release: 8.14.1
3+
jruby: 9.4.12.1
24
- release: 8.14.0
35
jruby: 9.4.12.1
46
- release: 8.13.0

docs/_openvox_8x/component_versions.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ on its own 5.x line). There is no single "OpenVox platform version" that pins al
2626
of them at once, so each component is shown in its own table, keyed by that
2727
component's release.
2828

29-
The bundled-component columns are **generated** from upstream release metadata (the
30-
per-release SBOMs published by [openvox-sbom-tools][sbom_tools] for the agent and
31-
OpenBolt, and component pins for the server), so they don't drift. Columns that
32-
aren't bundled or pinned anywhere (Java and PostgreSQL) are supported-version
33-
requirements maintained by hand; see the note under each table.
29+
The bundled-component columns are **generated** from the per-release SBOMs published
30+
by [openvox-sbom-tools][sbom_tools] for every component, so they don't drift. Columns
31+
that aren't bundled anywhere (Java and PostgreSQL) are supported-version requirements
32+
maintained by hand; see the note under each table.
3433

3534
<!-- markdownlint-disable MD055 MD056 -->
3635

@@ -48,8 +47,8 @@ changes; this page is only a pointer.
4847

4948
## Server components
5049

51-
These ship with the `openvox-server` package. JRuby is the bundled version,
52-
resolved from the server's pinned `jruby-utils`/`jruby-deps`.
50+
These ship with the `openvox-server` package. JRuby is the bundled version, read
51+
from the server's per-release SBOM.
5352

5453
| OpenVox Server release | JRuby | Java |
5554
| --- | --- | --- |
@@ -67,15 +66,19 @@ OpenVoxDB ships in the `openvoxdb` package on its own release line. The
6766
agents talk to OpenVoxDB) is released in lockstep at the **same version** as
6867
`openvoxdb`, so it is not listed separately.
6968

70-
| OpenVoxDB release | PostgreSQL |
71-
| --- | --- |
72-
{% for r in site.data.openvoxdb_release_contents[nav_key] %}| {{ r.release }} | 11+ (14+ recommended) |
69+
Jetty is the bundled HTTP server, read from the OpenVoxDB SBOM.
70+
71+
| OpenVoxDB release | Jetty | Java | PostgreSQL |
72+
| --- | --- | --- | --- |
73+
{% for r in site.data.openvoxdb_release_contents[nav_key] %}| {{ r.release }} | {{ r.jetty }} | 11, 17 | 11+ (14+ recommended) |
7374
{% endfor %}
7475

75-
> **PostgreSQL is not bundled.** OpenVoxDB connects to a PostgreSQL server you
76-
> install separately (the `puppet-openvoxdb` module can install it for you). The
77-
> PostgreSQL column shows the supported minimum (PostgreSQL 11; version 14 or newer
78-
> recommended), not a per-release pin; see [Configuring PostgreSQL][openvoxdb_postgres].
76+
> **Java and PostgreSQL are not bundled.** OpenVoxDB runs on a JVM and connects to a
77+
> PostgreSQL server you install separately (the `puppet-openvoxdb` module can install
78+
> PostgreSQL for you). The Java column shows the currently supported major versions,
79+
> and the PostgreSQL column the supported minimum (PostgreSQL 11; version 14 or newer
80+
> recommended) — neither is a per-release pin. See
81+
> [Configuring PostgreSQL][openvoxdb_postgres].
7982
8083
## OpenBolt
8184

lib/puppet_references/release_tables.rb

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ module PuppetReferences
1212
# drive the table and resolves one row per stable release from authoritative,
1313
# structured metadata, so the tables are never hand-maintained. The shared
1414
# GitHub releases/contents plumbing lives here so the per-table classes stay
15-
# small. Agent and OpenBolt rows come from openvox-sbom-tools SBOMs (see
16-
# SbomReleaseTable); server and OpenVoxDB rows are still resolved from upstream
17-
# pins until their SBOMs land.
15+
# small. Every table now sources its bundled-component columns from
16+
# openvox-sbom-tools SBOMs (see SbomReleaseTable).
1817
#
1918
# Authenticates with ENV GITHUB_TOKEN/GH_TOKEN, falling back to `gh auth token`
2019
# for local runs. A release whose components can't be resolved (e.g. a tag that
@@ -210,52 +209,45 @@ def columns
210209
end
211210
end
212211

213-
# openvox-server: bundled JRuby, resolved through the server's pinned
214-
# jruby-utils -> jruby-deps "9.4.12.1-3" (the trailing "-N" packaging suffix is
215-
# stripped). Java is a supported requirement, not a pin, so it is hand-maintained
216-
# on the docs page rather than resolved here. Stays on the upstream-pin scraper
217-
# until an openvox-server SBOM is published.
218-
class ServerReleaseTable < ReleaseTable
219-
SERVER_REPO = 'OpenVoxProject/openvox-server'
220-
JRUBY_UTILS_REPO = 'OpenVoxProject/jruby-utils'
212+
# openvox-server: bundled JRuby, read from the openvox-server SBOM's `jruby-base`
213+
# component (the resolved JRuby version). This replaces the previous resolution
214+
# through the server's pinned jruby-utils -> jruby-deps in project.clj, which
215+
# required stripping a "-N" packaging suffix; `jruby-base` is already clean. Java
216+
# is a supported requirement, not a pin, so it is hand-maintained on the docs
217+
# page rather than resolved here.
218+
class ServerReleaseTable < SbomReleaseTable
219+
REPO = 'OpenVoxProject/openvox-server'
221220

222221
def repo
223-
SERVER_REPO
224-
end
225-
226-
def row_for(tag, cache)
227-
jruby_utils = pin_in_project_clj(SERVER_REPO, tag, 'jruby-utils')
228-
{ 'release' => tag, 'jruby' => (cache[jruby_utils] ||= jruby_from_utils(jruby_utils)) }
222+
REPO
229223
end
230224

231-
private
232-
233-
def jruby_from_utils(jruby_utils_ver)
234-
deps = pin_in_project_clj(JRUBY_UTILS_REPO, jruby_utils_ver, 'jruby-deps')
235-
deps.sub(/-\d+\z/, '')
225+
def sbom_package
226+
'openvox-server'
236227
end
237228

238-
# Version of an org.openvoxproject/<name> dependency pinned in a repo's project.clj.
239-
def pin_in_project_clj(repo, ref, name)
240-
clj = raw(repo, 'project.clj', ref)
241-
version = clj[%r{org\.openvoxproject/#{Regexp.escape(name)}\s+"([^"]+)"}, 1]
242-
raise NotFound, "#{name} pin in #{repo}@#{ref}" unless version
243-
244-
version
229+
def columns
230+
{ 'jruby' => 'jruby-base' }
245231
end
246232
end
247233

248-
# OpenVoxDB ships on its own independent version line; the table is just its
249-
# stable release tags. PostgreSQL is a supported requirement (the openvoxdb
250-
# module only declares a postgresql dependency range, not a bundled version),
251-
# so it is hand-maintained on the docs page.
252-
class OpenvoxdbReleaseTable < ReleaseTable
234+
# OpenVoxDB ships on its own independent version line. It is a Clojure/JVM
235+
# service (no bundled JRuby), so the one bundled component worth surfacing is the
236+
# embedded Jetty HTTP server, read from its per-release SBOM. Java and PostgreSQL
237+
# are supported requirements (the openvoxdb module only declares a postgresql
238+
# dependency range, not a bundled version), so those columns stay hand-maintained
239+
# on the docs page.
240+
class OpenvoxdbReleaseTable < SbomReleaseTable
253241
def repo
254242
'OpenVoxProject/openvoxdb'
255243
end
256244

257-
def row_for(tag, _cache)
258-
{ 'release' => tag }
245+
def sbom_package
246+
'openvoxdb'
247+
end
248+
249+
def columns
250+
{ 'jetty' => 'jetty-server' }
259251
end
260252
end
261253
end

0 commit comments

Comments
 (0)