Skip to content

feat(distribution): Google Cloud Marketplace is live, Azure is in review, and the inventory knew neither - #577

Merged
cevheri merged 1 commit into
mainfrom
feat/gcp-marketplace-is-live
Sep 6, 2026
Merged

feat(distribution): Google Cloud Marketplace is live, Azure is in review, and the inventory knew neither#577
cevheri merged 1 commit into
mainfrom
feat/gcp-marketplace-is-live

Conversation

@yusuf-gundogdu

Copy link
Copy Markdown
Member

Two cloud marketplaces the inventory did not know about, and the counts that had rotted around
them. The inventory reads 35 channels · 27 live · 7 pending · 1 deprecated.

The two channels

Google Cloud Marketplace — live. Publicly listed on 2026-09-04 as a free Terraform
Kubernetes app. The repository said the opposite in two places at once: no entry in
distribution/channels.yaml, and docs/CHANNELS.md closing with "Planned and deliberately not
counted here until a listing exists: GCP, …"
. A reader asking the coverage question that page
exists to answer got a wrong answer.

Azure Marketplace — pending. The same omission one stage earlier. deploy/azure/ holds the
solution template, the ARM assets and the Partner Center listing texts; the offer is submitted and
in certification; no row tracked any of it, while five other open submissions had one.

Why GCP carries no pin and no CI

Each is a property of the channel, not an omission:

update.method: manual_ui The listing, its version and its Terraform module are submitted through Google's Producer Portal, and every change goes through Google's own review. No upstream repository accepts a bump PR for it.
pin.strategy: none The chart and the image are served from a private Artifact Registry. There is no public file to read a version out of, and a pin that guessed would be worse than none.

docs/DISTRIBUTION.md gains the section the channel's own docs link points at, including the one
fact most likely to be misread: the listed version reads 0.10 while the release is 0.13.7.
Google requires the chart and image tags of a Terraform Kubernetes app to share a MAJOR.MINOR, which
0.1.x and 0.13.x do not, so the published copy is packaged with a version of its own. It is not
a release tag and must not be compared with one.

Two counts that were wrong about this repository's own contents

docs/DISTRIBUTION.md said "Two catalog channels keep no descriptor here at all" and, in a second
passage, that "every other catalog channel does have one". Counted: eight have no
deploy/<provider>/ folder — Unraid CA, Sealos, TrueNAS SCALE, the four open submissions, and now
GCP. Both passages now name the set and say what each subgroup pins instead.

Three stale facts, each measured against the live source

Where Said Measured
channels.yaml + DISTRIBUTION.md Chocolatey serves 0.9.59 OData feed serves 0.13.6 — one behind, moderation lag
channels.yaml dokploy pin note bump tracked "in issue 175" issue closed 2026-07-31; Dokploy/templates#1039 merged 2026-08-03 → blueprint at 0.9.59
DISTRIBUTION.md:1378 "the other 25" rewritten as "every other channel", which cannot go stale again

links.last_bump_pr gets its first two values

docs/DISTRIBUTION.md has required this field since a bump merges, and the drift table renders a
column for it — yet none of the thirty-three entries carried one, so the column read - for
every row while at least two bumps had merged: caprover/one-click-apps#1315 and
Dokploy/templates#1039.

Also

docs/CHANNELS.md's closing paragraph is rewritten rather than trimmed: it listed Portainer as
"planned" while Portainer had been a pending row four lines above it, and filed Coolify and
Dokku under "planned" when neither is — Coolify declined the submission over a 1000-star
threshold its maintainers confirmed, and Dokku has no application catalog to apply to.

docs/CHANNELS.md and src/lib/distribution/channels.generated.ts are regenerated, not edited
(bun run distribution:matrix, bun run channels:showcase), whose freshness both gate on CI.

Verification

Every channel status in this diff was checked against its upstream PR state and its live catalog,
not inferred from a tracking issue — a tracking issue closed COMPLETED while its upstream PR is
still open is the specific trap here, and three of the pending rows are exactly that shape.

format · lint · typecheck · knip · test (38 groups, 0 fail) · build — all green.
distribution:check · distribution:matrix --check · channels:showcase:check — all exit 0.
Coverage: 45548/45548 lines, 100.00%.

Deliberately not in this PR

The version bumps the drift table reports for fly.toml (0.9.59) and the three Railway files
(0.9.22). Those change what a user deploys, and the Railway one has an out-of-repo consequence its
own PUBLISH.md describes — a different change with a different risk, and mixing it with an
inventory correction would make both harder to review.

… about

Google Cloud Marketplace went public on 2026-09-04 as a free Terraform Kubernetes app, and the
repository said the opposite in two places at once: `distribution/channels.yaml` carried no entry
for it, and `docs/CHANNELS.md` closed with "Planned and deliberately not counted here until a
listing exists: GCP, ...". A reader asking the coverage question that page exists to answer got a
wrong answer. Azure Marketplace is the same omission one stage earlier: `deploy/azure/` holds the
solution template, the ARM assets and the Partner Center listing texts, the offer is submitted and
in certification, and no row tracked any of it while five other open submissions had one.

GCP is `manual_ui` / `on_demand` with no pin, and each of those is a property of the channel rather
than an omission. The listing, its version and its Terraform module live in Google's Producer
Portal; the chart and image are served from a private Artifact Registry. There is no public file to
read a version out of and no upstream repository that accepts a bump, so nothing can be CI-driven
and a pin that guessed would be worse than none. `docs/DISTRIBUTION.md` gains the section the
channel's own `docs` link points at, including why the listed version reads 0.10 while the release
is 0.13.7: Google requires the chart and image tags of a Terraform Kubernetes app to share a
MAJOR.MINOR, which 0.1.x and 0.13.x do not, so the published copy is packaged with a version of its
own and must not be read as a release tag. Azure is recorded `pending` on the rule this file already
states - a submission that exists is tracked - and carries the note naming what to add on
publication.

The closing paragraph of `docs/CHANNELS.md` is rewritten rather than trimmed. It also listed
Portainer, which has been a `pending` row four lines above it since it was written, and filed
Coolify and Dokku under "planned" when neither is: Coolify declined the submission over a
1000-star threshold its maintainers confirmed, and Dokku has no application catalog to apply to.

Two counts in `docs/DISTRIBUTION.md` were wrong about this repository's own contents. It said "Two
catalog channels keep no descriptor here at all" and, in a second passage, that "every other
catalog channel does have one" - there are EIGHT with no `deploy/<provider>/` folder: Unraid CA,
Sealos, TrueNAS SCALE, the four open submissions, and now GCP. Both passages now name the set and
say what each subgroup pins instead.

Three stale facts fixed, each measured against the live source rather than inferred. The Chocolatey
note claimed the community feed still served 0.9.59; the OData feed serves 0.13.6, one behind,
which is moderation lag. The Dokploy pin note tracked a bump "in issue 175"; that issue closed on
2026-07-31 and Dokploy/templates#1039 merged on 2026-08-03, taking the blueprint to 0.9.59. And the
runtime-ownership table said "the other 25" of a set that has been growing for two months - it now
says "every other channel", which cannot go stale again.

`links.last_bump_pr` gets its first two values. This file has required it since a bump merges and
renders a column for it, and no entry of the thirty-three carried one, so the column read "-" for
every row while at least two bumps had merged: caprover/one-click-apps#1315 and
Dokploy/templates#1039.

`docs/CHANNELS.md` and `src/lib/distribution/channels.generated.ts` are regenerated, not edited -
`bun run distribution:matrix` and `bun run channels:showcase`, whose freshness both gate on CI.
The inventory reads 35 channels, 27 live, 7 pending, 1 deprecated.
@codecov

codecov Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sonarqubecloud

sonarqubecloud Bot commented Sep 5, 2026

Copy link
Copy Markdown

@cevheri
cevheri merged commit 45cb33d into main Sep 6, 2026
28 checks passed
@cevheri
cevheri deleted the feat/gcp-marketplace-is-live branch September 6, 2026 06:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants