Skip to content

Commit c10bd0c

Browse files
authored
Merge pull request #15158 from nextcloud/fix/display-version-stable-branches
fix: use GITHUB_BASE_REF to detect stable branch for display_version and PDF
2 parents 192963b + 75c0153 commit c10bd0c

2 files changed

Lines changed: 33 additions & 8 deletions

File tree

.github/workflows/sphinxbuild.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,13 +271,15 @@ jobs:
271271

272272
- name: Compute PDF release version
273273
id: pdf_version
274+
shell: bash
274275
run: |
275-
branch="${GITHUB_REF#refs/heads/}"
276-
if [[ "$branch" == stable* ]]; then
277-
echo "release=${branch#stable}" >> $GITHUB_OUTPUT
276+
# For PRs use the target branch; for pushes use the current branch.
277+
# This handles both stable34 direct pushes and backport/*/stable34 PRs.
278+
branch="${GITHUB_BASE_REF:-${GITHUB_REF#refs/heads/}}"
279+
if [[ "$branch" =~ ^stable([0-9]+)$ ]]; then
280+
echo "release=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
278281
else
279-
# For master (latest), derive the dev version from conf.py so the
280-
# PDF cover shows a real version number rather than "latest".
282+
# master: derive the dev version from conf.py.
281283
version_stable=$(grep -m1 '^\s*version_stable\s*=' conf.py | grep -o '[0-9]\+')
282284
echo "release=$((version_stable + 1))" >> $GITHUB_OUTPUT
283285
fi

conf.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,21 @@
6464

6565
# latest released stable — CHANGING IT MUST RESULT IN A CHANGE OF THE SYMLINK ON THE LIVE SERVER
6666
version_stable = 34 # mapped to https://docs.nextcloud.com/server/stable/
67-
display_version = release if release != 'latest' else str(version_stable + 1)
67+
import re as _re
68+
# Detect stable branch version for display purposes.
69+
# For PRs: GITHUB_BASE_REF is the target branch (e.g. 'stable34').
70+
# For direct pushes: GITHUB_REF is 'refs/heads/stable34'.
71+
_base = os.environ.get('GITHUB_BASE_REF', '')
72+
_ref = os.environ.get('GITHUB_REF', '')
73+
_stable_ver = (
74+
_re.match(r'^stable(\d+)$', _base)
75+
or _re.match(r'^refs/heads/stable(\d+)$', _ref)
76+
)
77+
display_version = (
78+
release if release != 'latest' # PDF/ePub builds (DOCS_RELEASE set)
79+
else _stable_ver.group(1) if _stable_ver # stableNN branches and PRs targeting them
80+
else str(version_stable + 1) # master
81+
)
6882

6983
# Also search for "TODO ON RELEASE" in the rst files
7084

@@ -83,11 +97,20 @@ def setup(app):
8397

8498
def generateVersionsDocs(current_docs):
8599
versions_doc = []
100+
101+
# If viewing an unsupported (older than version_start) branch, prepend it so it
102+
# appears last after the template's |reverse — e.g. "26 (unsupported)" at the bottom.
103+
if _stable_ver:
104+
branch_ver = int(_stable_ver.group(1))
105+
if branch_ver < version_start:
106+
url = 'https://docs.nextcloud.com/server/%s/%s' % (str(branch_ver), current_docs)
107+
versions_doc.append((branch_ver, url, '%s (unsupported)' % branch_ver))
108+
86109
for v in range(version_start, version_stable):
87110
url = 'https://docs.nextcloud.com/server/%s/%s' % (str(v), current_docs)
88111
versions_doc.append((v, url, str(v)))
89112
versions_doc.append(('stable', 'https://docs.nextcloud.com/server/stable/%s' % current_docs, '%s (stable)' % version_stable))
90-
versions_doc.append(('latest', 'https://docs.nextcloud.com/server/latest/%s' % current_docs, '%s (latest)' % display_version))
113+
versions_doc.append(('latest', 'https://docs.nextcloud.com/server/latest/%s' % current_docs, '%s (latest)' % str(version_stable + 1)))
91114
return versions_doc
92115

93116
if version.isdigit():
@@ -96,7 +119,7 @@ def generateVersionsDocs(current_docs):
96119
github_branch = 'master'
97120

98121
html_context = {
99-
'current_version': version,
122+
'current_version': int(_stable_ver.group(1)) if _stable_ver else version,
100123
'display_version': display_version,
101124
'READTHEDOCS': True,
102125

0 commit comments

Comments
 (0)