You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by sb...@apache.org on 2026/08/17 15:24:28 UTC

(tooling-trusted-releases) branch sbp updated: Reflect alpha and beta SVN publication practices in the UI and docs

This is an automated email from the ASF dual-hosted git repository.

sbp pushed a commit to branch sbp
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git


The following commit(s) were added to refs/heads/sbp by this push:
     new adcfe95f Reflect alpha and beta SVN publication practices in the UI and docs
adcfe95f is described below

commit adcfe95f2b4e69edd1ee538eb2e0a7c29011c143
Author: Sean B. Palmer <se...@miscoranda.com>
AuthorDate: Mon Aug 17 16:23:34 2026 +0100

    Reflect alpha and beta SVN publication practices in the UI and docs
---
 atr/docs/promoting-to-release.md | 12 ++++++++----
 atr/docs/staging-and-voting.md   |  2 +-
 atr/docs/user-guide.md           |  2 +-
 atr/get/finish.py                | 29 +++++++++++++++++++----------
 tests/unit/test_get_finish.py    | 29 +++++++++++++++++++++++++++++
 5 files changed, 58 insertions(+), 16 deletions(-)

diff --git a/atr/docs/promoting-to-release.md b/atr/docs/promoting-to-release.md
index 1f22f3f1..551151de 100644
--- a/atr/docs/promoting-to-release.md
+++ b/atr/docs/promoting-to-release.md
@@ -17,9 +17,11 @@
 
 ## Overview
 
-> **This is ATR Alpha behaviour which will change in Beta.**
+SVN is not an intrinsic part of the ATR release process until publication. The candidate is staged in ATR and voted on there, whatever method was used to upload the files, as described in [Staging and voting](staging-and-voting). Where ATR publishes to at the end of that process differs between Alpha and Beta.
 
-When the ATR workflow completes, i.e. when the vote is resolved and the release announced, ATR commits the approved artifacts to its own area of the Apache distribution SVN repository:
+### Alpha
+
+During Alpha, when the ATR workflow completes, i.e. when the vote is resolved and the release announced, ATR commits the approved artifacts to its own area of the Apache distribution SVN repository:
 
 * TLP: `https://dist.apache.org/repos/dist/atr/<committee>/`
 * Podling: `https://dist.apache.org/repos/dist/atr/incubator/<committee>/`
@@ -29,9 +31,11 @@ Files in `/dist/atr/` are **not mirrored** by the Apache distribution mirror net
 * TLP: `https://dist.apache.org/repos/dist/release/<committee>/`
 * Podling: `https://dist.apache.org/repos/dist/release/incubator/<committee>/`
 
-The move is a manual SVN step performed once per release. ATR does not do it for you yet because automatic publishing to SVN is currently in testing, so we use `/dist/atr/` instead of `/dist/release/`. `/dist/atr/` is a testing area which we intend to operate only for the duration of Alpha. When Beta starts, ATR will publish approved artifacts directly to `/dist/release/` after a successful vote, and this manual step will no longer be needed.
+The move is a manual SVN step performed once per release, and the rest of this page describes it. ATR does not do it for you during Alpha because automatic publishing to SVN is being tested: `/dist/atr/` is a testing area, not a release area.
+
+### Beta
 
-Note that SVN is not an intrinsic part of the ATR release process until publication. The candidate is staged in ATR and voted on there, whatever method was used to upload the files, as described in [Staging and voting](staging-and-voting).
+From Beta, ATR publishes the approved artifacts directly to `/dist/release/` after a successful vote, and the manual step described on this page is no longer needed. The finish page for your release shows which area your ATR instance publishes to.
 
 ## Prerequisites
 
diff --git a/atr/docs/staging-and-voting.md b/atr/docs/staging-and-voting.md
index da2e2002..df3ab82c 100644
--- a/atr/docs/staging-and-voting.md
+++ b/atr/docs/staging-and-voting.md
@@ -50,4 +50,4 @@ The SVN import is one option among four, and we expect most release managers to
 
 Before ATR published anything to SVN, we advised release managers to upload their candidate to `dist/dev`, copy the files into ATR, hold the vote, and then move the files from `dist/dev` to `dist/release` to publish. Under that workflow it was the release manager's responsibility to make sure that the files in `dist/dev` matched the ones in ATR for the duration of the vote.
 
-That workflow still works, but it is no longer necessary, because ATR now publishes the approved artifacts itself to `dist/atr` once the vote passes. Unless you have a specific reason to keep using `dist/dev`, you do not need it when using ATR.
+That workflow still works, but it is no longer necessary, because ATR now publishes the approved artifacts itself once the vote passes: to `dist/atr` during Alpha, and directly to `dist/release` from Beta. Unless you have a specific reason to keep using `dist/dev`, you do not need it when using ATR.
diff --git a/atr/docs/user-guide.md b/atr/docs/user-guide.md
index 56b4ca2d..d8572df2 100644
--- a/atr/docs/user-guide.md
+++ b/atr/docs/user-guide.md
@@ -63,7 +63,7 @@ The ASF releases open source software. The ATR platform helps PMCs release their
      The artifacts being voted on remain in ATR for the duration of the vote, and vote emails should link to them there. See [Staging and voting](staging-and-voting).
    * ***Finish***. In this phase the Release Artifacts are committed to the Apache distribution SVN repository and announcement is deferred until the artifacts have made it
      onto the download servers. The announcement is sent and the artifacts published to the Release Catalog. During Alpha the commit goes to `svn:dist:atr` and a
-     manual move is needed to publish, as described in [Promoting to release](promoting-to-release).
+     manual move is needed to publish, as described in [Promoting to release](promoting-to-release); from Beta the commit goes directly to `svn:dist:release`.
 2. ***Released***. Releases that are released are active and cataloged and available via both a standard catalog api and at the proper urls using the CDN and download servers.
    Releases that use the current legacy methods skipping the ATR are also cataloged,
 3. ***Archived***. All cataloged releases may be archived using the ATR platform or by direct removal from `svn:dist:release`.
diff --git a/atr/get/finish.py b/atr/get/finish.py
index 12ad2e1e..b696a668 100644
--- a/atr/get/finish.py
+++ b/atr/get/finish.py
@@ -250,16 +250,8 @@ async def _render_page(
     page.append(_render_release_card(release, announce_disable_message))
 
     page.p[
-        "On this page you should do three things: 1. publish to SVN ",
-        htm.code["dist/atr"],
-        " if you did not already, and then ",
-        htm.a(href=util.as_url(docs.page, path="promoting-to-release"))[
-            "manually ",
-            htm.code["svn mv"],
-            " the results",
-        ],
-        " to ",
-        htm.code["dist/release"],
+        "On this page you should do three things: ",
+        *_render_publish_step(),
         "; 2. optionally record third party distributions that you made; and then, when ready, 3. use ",
         htm.strong["Announce"],
         " above to complete the process.",
@@ -316,6 +308,23 @@ async def _render_page(
     )
 
 
+def _render_publish_step() -> list[htm.Element | str]:
+    if util.svn_publish_target() is util.SvnPublishTarget.RELEASE:
+        return ["1. publish to SVN ", htm.code["dist/release"], " if you did not already"]
+    return [
+        "1. publish to SVN ",
+        htm.code["dist/atr"],
+        " if you did not already, and then ",
+        htm.a(href=util.as_url(docs.page, path="promoting-to-release"))[
+            "manually ",
+            htm.code["svn mv"],
+            " the results",
+        ],
+        " to ",
+        htm.code["dist/release"],
+    ]
+
+
 def _render_release_card(release: sql.Release, announce_disable_message: str) -> htm.Element:
     """Render the release information card."""
     announce_classes = ".btn-success"
diff --git a/tests/unit/test_get_finish.py b/tests/unit/test_get_finish.py
new file mode 100644
index 00000000..f268422a
--- /dev/null
+++ b/tests/unit/test_get_finish.py
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+import pytest
+
+import atr.get.finish as finish
+import atr.util as util
+
+
+def test_render_publish_step_omits_promotion_for_release_target(monkeypatch: pytest.MonkeyPatch) -> None:
+    monkeypatch.setattr(util, "svn_publish_target", lambda: util.SvnPublishTarget.RELEASE)
+    html = "".join(str(item) for item in finish._render_publish_step())
+    assert "dist/release" in html
+    assert "dist/atr" not in html
+    assert "<a " not in html


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org