|
| 1 | +Title: Apache Trusted Release Platform Services |
| 2 | +license: https://www.apache.org/licenses/LICENSE-2.0 |
| 3 | + |
| 4 | + |
| 5 | +_This is a discussion and the actual implementation will diverge._ |
| 6 | + |
| 7 | +https://releases.apache.org |
| 8 | + |
| 9 | +## Datastore |
| 10 | + |
| 11 | +> We will iterate on these during implementation. |
| 12 | +
|
| 13 | +1. Release Storage. A large filesystem with folders for each release's files. |
| 14 | +2. Metadata Database. A database on the server with the metadata schema. |
| 15 | + |
| 16 | +See [Data Model](https://github.com/apache/tooling-docs/blob/main/apache-trusted-release/data-model.md) for a discussion of the objects managed by the ATR. |
| 17 | + |
| 18 | +## Web Service |
| 19 | + |
| 20 | +1. `asfquart` based asynchronous python web service. |
| 21 | +2. Fronted by `httpd`. |
| 22 | +3. Static content may be served without going through `asfquart`. |
| 23 | +4. Monolithic. |
| 24 | +5. Fronted by a CDN. The caching policies need to be properly defined. |
| 25 | + |
| 26 | +## Legacy |
| 27 | + |
| 28 | +1. These domains continue to work in the same way: |
| 29 | + - archive.apache.org |
| 30 | + - downloads.apache.org and dlcdn.apache.org |
| 31 | + - dist.apache.org |
| 32 | +2. See [Legacy Releases from SVN Dist](https://github.com/apache/tooling-docs/blob/main/apache-trusted-release/svn-dist.md). In this development phase we prefer to be at _transition 2_. |
| 33 | + |
| 34 | +### Release Stages |
| 35 | + |
| 36 | +1. Build Releases |
| 37 | +2. Candidate Releases |
| 38 | +3. Current Releases |
| 39 | +4. Archived / Revoked / EOL / Atticked Releases |
| 40 | + |
| 41 | +> “Nightlies” a particular build type is for a later phase. |
| 42 | +
|
| 43 | +### Release Phases |
| 44 | + |
| 45 | +See [Release Lifecycle](https://github.com/apache/tooling-docs/blob/main/apache-trusted-release/lifecycle.md) for how phases are chained together to perform a Release. |
| 46 | + |
| 47 | +### Release co-ordinates |
| 48 | + |
| 49 | +The co-ordinates make up the external path to objects. The metadata database provides the map to the local path. |
| 50 | + |
| 51 | +1. Stage (Candidate, Current, Archived, …) |
| 52 | +2. PMC (Responsible TLP or Incubator PPMC) |
| 53 | +3. Product Line (Main, Sub-projects) |
| 54 | +4. Version (String, latest) |
| 55 | +5. Files, Metadata (A release is a folder of one or more files or sub-folders) |
| 56 | + |
| 57 | +> The following are examples. We will iterate during implementation. |
| 58 | +
|
| 59 | +- Latest main product release: `/<stage>/<pmc>/latest/<file>` |
| 60 | +- Main product by version: `/<stage>/<pmc>/<version>/<file>` |
| 61 | +- Latest product release: `/<stage>/<pmc>/<product>/latest/<file>` |
| 62 | +- Product release by version: `/<stage>/<pmc>/<product>/<version>/<file>` |
| 63 | + |
| 64 | +### Restful API |
| 65 | + |
| 66 | +1. GET |
| 67 | + - Metadata |
| 68 | + - Release |
| 69 | + - Package files including SBOMs |
| 70 | + - Signing keys |
| 71 | + |
| 72 | +2. CRUD on |
| 73 | + - Releases - Delete is not removal. It is a stage. |
| 74 | + - Artifacts - Managed with a Release. Infra can do targeted full CRUD on artifacts if required. |
| 75 | + - Public Signing Keys - Delete only if unused. |
| 76 | + - Votes - Store each vote in metadata. |
| 77 | + - SBOMs - Special files stored in the release folder. |
| 78 | + |
| 79 | +3. POST Phases - Transitions, Activities, and Communication |
| 80 | + - Transition into Phase. |
| 81 | + - Perform Phase activity. |
| 82 | + - Optionally email phase status. |
| 83 | + |
| 84 | + See [Release Lifecycle](https://github.com/apache/tooling-docs/blob/main/apache-trusted-release/lifecycle.md) for how phases are chained together to perform a Release. |
| 85 | + |
| 86 | +4. POST Templated Emails |
| 87 | + - Announcements |
| 88 | + - Votes |
| 89 | + - Status |
| 90 | + - Transitions |
| 91 | + |
| 92 | +### Web UI |
| 93 | + |
| 94 | +Note: this section is a flexible outline of what we intend for the UI, and may change during implementation. |
| 95 | + |
| 96 | +1. Directory Pages |
| 97 | + - PMC directory (_main page_) - excludes podlings and atticked PMCs |
| 98 | + - PMC release directory (also PPMC) |
| 99 | + - Incubator podling directory |
| 100 | + - Atticked PMC directory |
| 101 | + |
| 102 | +2. Release Page |
| 103 | + - [Download page requirements](https://infra.apache.org/release-download-pages.html) |
| 104 | + - Release level metadata |
| 105 | + - PMC Information and webspage links |
| 106 | + - Download package from directory of release |
| 107 | + - Maintenance actions |
| 108 | + - History of events |
| 109 | + |
| 110 | +4. PMC Management Page |
| 111 | + - PMC level metadata and releases |
| 112 | + - Product level metadata and releases |
| 113 | + - Manage releases |
| 114 | + - PMC lifecycle transitions - podling, TLP, attic. |
| 115 | + |
| 116 | +5. System Admin Page |
| 117 | + - Manage Distribution Channels |
| 118 | + - Perform Migration Tasks |
| 119 | + - Enable GHA Builds |
| 120 | + - Manage PMC Transitions |
| 121 | + - Watch Operations |
| 122 | + |
| 123 | +5. Audit Page |
| 124 | + - ASF event history |
| 125 | + - PMC event history |
| 126 | + - Product event history |
| 127 | + |
| 128 | +6. Page Template |
| 129 | + - Responsive with Header(Hamburger)/Content/Footer. |
| 130 | + - Include Search in Header(Hamburger) |
| 131 | + |
| 132 | + |
0 commit comments