Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/build-pelican.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ jobs:
- uses: actions/checkout@v4
with:
persist-credentials: true
# This must equal the push/branches list above, and be appropriate for the destination below
ref: 'main'
ref: ${{ github.ref || 'main' }}
- uses: apache/infrastructure-actions/pelican@ed044141796eb8ad67581cf5f4210656ffa77daa
with:
# This must be appropriate for the branch being built
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-added-large-files
# - id: check-added-large-files
- id: check-ast
- id: check-case-conflict
- id: check-executables-have-shebangs
Expand All @@ -27,7 +27,7 @@ repos:
- id: check-vcs-permalinks
- id: check-yaml
- id: detect-private-key
# - id: end-of-file-fixer
- id: end-of-file-fixer
- id: fix-byte-order-marker
- id: forbid-submodules
- id: mixed-line-ending
Expand Down
2,029 changes: 2,029 additions & 0 deletions content/js/mermaid.min.js

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions content/pages/svn-dist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
Title: Legacy Releases from SVN Dist
license: https://www.apache.org/licenses/LICENSE-2.0

We have three types of Releases to create using a "Pull from 'Dist'" process.

1. Release Candidates from `dist/dev` as the Release Manager requests from within the ATR Web UI.

2. Current Releases from `dist/release` this will be used for the initial migration and may be used from time to time as PMCs use the old methods.

3. Archived Releases which are migrated from the archive if not present in the Current Releases.

## ATR Web UX

We will need pages to perform tasks related to the use of our legacy setup.

### PMC Management Page

1. **Create Release Candidate** - upload the packages for a release candidate from `svn:dist/dev`. This page can also handle direct uploads.

3. **Legacy Release** - upload an approved release from `svn:dist/release`.

### System Admin Page

1. **Synchronise Current Releases** - scan `svn:dist/release` and migrate any not in the ATR.

2. **Synchronize Release Archive** - scan `archive` repository and migrate any archived not in the ATR as a Current or Archived Release.

## Backends Hosting Release Artifacts

The legacy domains are currently connected to `svn:dist/release` as follows:

1. rsync.apache.org has a directory that updates a checkout of `svn:dist/release`
2. downloads.apache.org periodically rsyncs with rsync.apache.org
3. archive.apache.org periodically rsyncs with rsync.apache.org without removing artifacts from the destination.

### Transitional Steps

```mermaid
flowchart TD
subgraph Legacy
A[svn:dist/release]
B[rsync.apache.org]
A -->|svn| B
C["downloads.apache.org"]
D[archive.apache.org]
B -->|rsync| C
B -->|rsync| D
end
```

1. **ATR writes to SVN** - ATR Releases write to `svn:dist/release` as an interim step.

```mermaid
flowchart TD
subgraph Transition 1
ATR[releases.apache.org]
A[svn:dist/release]
ATR -->|svn| A
B[rsync.apache.org]
A -->|svn| B
C["downloads.apache.org"]
D[archive.apache.org]
B -->|rsync| C
B -->|rsync| D
end
```

2. **ATR and Legacy are Integrated** - Insert ATR into the rsync chain.
- ATR has a directory with the same organization as `svn:dist/release` using symbolic links to the Releases in the ATR Datastore.

- (a) ATR's rsync from rsync.apache.org should detect legacy release addition and deletion.

```mermaid
flowchart TD
subgraph Transition 2A
A[svn:dist/release]
B[rsync.apache.org]
A -->|svn| B
ATR[releases.apache.org]
B -->|rsync| ATR
C["downloads.apache.org"]
D[archive.apache.org]
ATR -->|rsync| C
ATR -->|rsync| D
end
```

Or

- (b) ATR coexists on rsync.apache.org and detects legacy release addition and deletion.

```mermaid
flowchart TD
subgraph Transition 2B
A[svn:dist/release]
subgraph ATR on Rsync
ATR[releases.apache.org]
B[rsync.apache.org]
ATR <--> B
end
A -->|svn| ATR
C["downloads.apache.org"]
D[archive.apache.org]
B -->|rsync| C
B -->|rsync| D
end
```

3. **Legacy is Retired** - `svn:dist/release` is retired.

```mermaid
flowchart TD
subgraph Transition 3
ATR[releases.apache.org]
C["downloads.apache.org"]
D[archive.apache.org]
ATR -->|rsync| C
ATR -->|rsync| D
end
```

4. **Further Integration** - downloads.apache.org is hosted on ATR. Downloads.apache.org is multiple servers. ATR would need to work on multiple servers

```mermaid
flowchart TD
subgraph Transition 4
ATR["releases.apache.org"]
D[archive.apache.org]
ATR -->|rsync| D
end
```
26 changes: 26 additions & 0 deletions content/theme/templates/page.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,32 @@
{% include "footer.html" %}
</div>
</main>
<script>
document.addEventListener("DOMContentLoaded", () => {
function decodeHtmlEntities(str) {
const txt = document.createElement("textarea");
txt.innerHTML = str;
return txt.value;
}
document.querySelectorAll("pre > code.language-mermaid").forEach((code, i) => {
let decoded = decodeHtmlEntities(code.innerHTML);
// Normalize whitespace
decoded = decoded.replace(/\t/g, " ");
decoded = decoded.replace(/^\s*\n/, "").replace(/\n\s*$/, "");
const div = document.createElement("div");
div.className = "mermaid";
div.textContent = decoded;
code.parentElement.replaceWith(div);
console.log(`=== Mermaid block ${i} ===`);
console.log(decoded);
});
// Mermaid v10+ runs asynchronously
mermaid.run({ querySelector: ".mermaid" })
.catch(err => {
console.error("Mermaid rendering failed:", err);
});
});
</script>
<script>hljs.highlightAll();</script>
</body>
</html>
Expand Down
14 changes: 14 additions & 0 deletions content/theme/templates/styles.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<link href="/css/headerlink.css" rel="stylesheet">
<link href="/highlight/github.min.css" rel="stylesheet">
<script src="/highlight/highlight.min.js"></script>
<script src="/js/mermaid.min.js"></script>
<!-- pagefind search -->
<link href="/_pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/_pagefind/pagefind-ui.js" type="text/javascript"></script>
Expand All @@ -18,6 +19,12 @@
});
}
</script>
<script>
mermaid.initialize({
startOnLoad: true,
theme: "default"
});
</script>
<!-- pagefind search box styling -->
<style type="text/css">
.search-form {
Expand All @@ -29,4 +36,11 @@
overflow: auto;
margin-top: 5px;
}
.mermaid {
margin: 1.2em 0;
padding: 1em;
background: #fff;
border: 1px solid #d0d7de;
broder-radius: 6px;
}
</style>
2 changes: 1 addition & 1 deletion pelicanconf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# Specify location of plugins, and which to use
PLUGIN_PATHS = [ 'plugins', ]
# If the website uses any *.ezmd files, include the 'gfm' and 'asfreader' plugins (in that order)
PLUGINS = [ 'toc', 'spu', 'gfm', 'asfgenid', 'asfrun', ]
PLUGINS = [ 'toc', 'spu', 'gfm', 'asfgenid', 'asfrun', ]
# All content is located at '.' (aka content/ )
PAGE_PATHS = [ 'pages' ]
STATIC_PATHS = [ '.', ]
Expand Down