-
Notifications
You must be signed in to change notification settings - Fork 16
doc: Add documentation of release manifests implementation #2359
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,105 @@ | ||||||||||||||
| --- | ||||||||||||||
| layout: docs | ||||||||||||||
| title: Docs - Reference - Release Manifests | ||||||||||||||
| description: "Reference guide for AppMap release manifests used for version discovery and automated mirroring." | ||||||||||||||
| toc: true | ||||||||||||||
| reference: true | ||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
| # Release Manifests | ||||||||||||||
|
|
||||||||||||||
| AppMap uses a manifest-based system for distributing its core binaries (`appmap` and `scanner`). This system provides a stable, machine-readable way for clients to discover new versions, verify asset integrity, and support advanced scenarios like version pinning and enterprise mirroring. | ||||||||||||||
|
|
||||||||||||||
| ## Overview | ||||||||||||||
|
|
||||||||||||||
| The release manifests are JSON files hosted on a dedicated, orphan Git branch named `release-manifests` within the `appmap-js` repository. This branch serves as the single source of truth for all release metadata, independent of the `main` branch history. | ||||||||||||||
|
|
||||||||||||||
| ## Two-Tier Manifest System | ||||||||||||||
|
|
||||||||||||||
| For every release, two types of manifests are generated: | ||||||||||||||
|
|
||||||||||||||
| 1. **Versioned Manifest:** An immutable record of a specific release. | ||||||||||||||
| * Naming convention: `[tool]-v[version].json` (e.g., `appmap-v3.197.1.json`) | ||||||||||||||
| 2. **Latest Pointer Manifest:** A "floating" manifest that always points to the most recent stable release. | ||||||||||||||
| * Naming convention: `[tool]-latest.json` (e.g., `appmap-latest.json`) | ||||||||||||||
|
|
||||||||||||||
| ## Discovery URLs | ||||||||||||||
|
|
||||||||||||||
| Clients can discover releases by fetching manifests directly from GitHub's raw content service. | ||||||||||||||
|
|
||||||||||||||
| | Tool | Type | Discovery URL | | ||||||||||||||
| | :--- | :--- | :--- | | ||||||||||||||
| | **AppMap CLI** | Latest | `https://raw.githubusercontent.com/getappmap/appmap-js/release-manifests/appmap-latest.json` | | ||||||||||||||
| | **AppMap CLI** | Versioned | `https://raw.githubusercontent.com/getappmap/appmap-js/release-manifests/appmap-v<VERSION>.json` | | ||||||||||||||
| | **Scanner** | Latest | `https://raw.githubusercontent.com/getappmap/appmap-js/release-manifests/scanner-latest.json` | | ||||||||||||||
| | **Scanner** | Versioned | `https://raw.githubusercontent.com/getappmap/appmap-js/release-manifests/scanner-v<VERSION>.json` | | ||||||||||||||
|
|
||||||||||||||
| ## Manifest Format | ||||||||||||||
|
|
||||||||||||||
| The manifest is a JSON object containing the release tag and an array of assets. | ||||||||||||||
|
|
||||||||||||||
| ```json | ||||||||||||||
| { | ||||||||||||||
| "tag_name": "@appland/appmap-v3.197.1", | ||||||||||||||
| "assets": [ | ||||||||||||||
| { | ||||||||||||||
| "name": "appmap-linux-x64", | ||||||||||||||
| "url": "https://github.com/getappmap/appmap-js/releases/download/%40appland/appmap-v3.197.1/appmap-linux-x64", | ||||||||||||||
| "digest": "sha256:405dbec9eb9e1bece9bc8acac56c33c5f404f7023f6df2918a770451c8173d25" | ||||||||||||||
| }, | ||||||||||||||
| ... | ||||||||||||||
|
||||||||||||||
| ... | |
| { | |
| "name": "appmap-darwin-arm64", | |
| "url": "https://github.com/getappmap/appmap-js/releases/download/%40appland/appmap-v3.197.1/appmap-darwin-arm64", | |
| "digest": "sha256:7d6f4b2e0b8a6b8a2d3c4e5f60718293a4b5c6d7e8f90123456789abcdef0123" | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure people can figure this one out.
Copilot
AI
Apr 30, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There’s trailing whitespace at the end of this line. It’s minor, but it can create noisy diffs and some markdown linters will flag it; please trim it.
| The manifest system enhances security by providing a built-in mechanism for integrity verification. | |
| The manifest system enhances security by providing a built-in mechanism for integrity verification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, now you're just scratching the bottom of the barrel.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This page uses the docs-site frontmatter (
layout: docs,reference: true), but it lives underarchitecture/. All otherlayout: docscontent appears to live underdocs/(and reference pages underdocs/reference/), so as-is this may not be routed/indexed with the rest of the docs/reference section. Consider moving the file underdocs/reference/and aligning its frontmatter (e.g.,title: Docs - Reference+name/stepif needed) so it’s included consistently in the docs build/navigation.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, but docs/reference comes from appmap.io. I kept the front matter since it doesn't hurt and we might want to merge later, but for now I didn't want it to get mixed with imported content.