From 7ad26e44b615bdb89a1db319633564223e2362bf Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Mon, 06 Apr 2026 07:13:38 +0000 Subject: [PATCH] appview/sites: use repoIdentifier for archive requests we could just use the knotmirror here directly instead of deploying from the knot, but we'd need the knotmirror to update before the site. for now just deploy from the knot. Signed-off-by: oppiliappan --- appview/repo/settings.go | 8 +------- appview/sites/sites.go | 21 ++++++++++++++++----- appview/state/knotstream.go | 10 ++-------- 3 file(s) changed, 19 insertion(s)(+), 20 deletion(s)(-) diff --git a/appview/repo/settings.go b/appview/repo/settings.go --- a/appview/repo/settings.go +++ b/appview/repo/settings.go @@ -295,12 +295,6 @@ if ownerClaim == nil { rp.logger.Info("skipping deploy: no active domain claim", "repo", f.RepoIdentifier()) } else if rp.cfClient.Enabled() { - scheme := "http" - if !rp.config.Core.Dev { - scheme = "https" - } - knotHost := fmt.Sprintf("%s://%s", scheme, f.Knot) - go func() { ctx := context.Background() @@ -311,7 +305,7 @@ Trigger: models.SiteDeployTriggerConfigChange, } - deployErr := sites.Deploy(ctx, rp.cfClient, knotHost, f.Did, f.Name, branch, dir) + deployErr := sites.Deploy(ctx, rp.cfClient, rp.config, f, branch, dir) if deployErr != nil { l.Error("sites: initial R2 sync failed", "repo", f.RepoIdentifier(), "err", deployErr) deploy.Status = models.SiteDeployStatusFailure diff --git a/appview/sites/sites.go b/appview/sites/sites.go --- a/appview/sites/sites.go +++ b/appview/sites/sites.go @@ -16,6 +16,8 @@ indigoxrpc "github.com/bluesky-social/indigo/xrpc" "tangled.org/core/api/tangled" "tangled.org/core/appview/cloudflare" + "tangled.org/core/appview/config" + "tangled.org/core/appview/models" ) // DomainMapping is the value stored in Workers KV, keyed by the bare domain. @@ -114,7 +116,10 @@ func Deploy( ctx context.Context, cf *cloudflare.Client, - knotHost, repoDid, repoName, branch, deployDir string, + config *config.Config, + f *models.Repo, + branch string, + deployDir string, ) error { tmpDir, err := os.MkdirTemp("", "tangled-sites-*") if err != nil { @@ -122,7 +127,7 @@ } defer os.RemoveAll(tmpDir) - if err := extractArchive(ctx, knotHost, repoDid, repoName, branch, tmpDir); err != nil { + if err := extractArchive(ctx, config, f, branch, tmpDir); err != nil { return fmt.Errorf("extracting archive: %w", err) } @@ -153,7 +158,7 @@ return fmt.Errorf("walking deploy dir: %w", err) } - if err := cf.SyncFiles(ctx, prefix(repoDid, repoName), files); err != nil { + if err := cf.SyncFiles(ctx, prefix(f.Did, f.Name), files); err != nil { return fmt.Errorf("syncing files to R2: %w", err) } @@ -170,9 +175,15 @@ // extractArchive fetches the tar.gz archive for the given repo+branch from // the knot via XRPC and extracts it into destDir. -func extractArchive(ctx context.Context, knotHost, repoDid, repoName, branch, destDir string) error { +func extractArchive(ctx context.Context, config *config.Config, f *models.Repo, branch, destDir string) error { + scheme := "https" + if config.Core.Dev { + scheme = "http" + } + knotHost := fmt.Sprintf("%s://%s", scheme, f.Knot) + xrpcc := &indigoxrpc.Client{Host: knotHost} - data, err := tangled.RepoArchive(ctx, xrpcc, "tar.gz", "", branch, repoDid+"/"+repoName) + data, err := tangled.RepoArchive(ctx, xrpcc, "tar.gz", "", branch, f.RepoIdentifier()) if err != nil { return fmt.Errorf("fetching archive: %w", err) } diff --git a/appview/state/knotstream.go b/appview/state/knotstream.go --- a/appview/state/knotstream.go +++ b/appview/state/knotstream.go @@ -158,7 +158,7 @@ // triggerSitesDeployIfNeeded checks whether the pushed ref matches the sites // branch configured for this repo and, if so, syncs the site to R2 -func triggerSitesDeployIfNeeded(ctx context.Context, d *db.DB, cfClient *cloudflare.Client, c *config.Config, record tangled.GitRefUpdate, source ec.Source) { +func triggerSitesDeployIfNeeded(ctx context.Context, d *db.DB, cfClient *cloudflare.Client, cfg *config.Config, record tangled.GitRefUpdate, source ec.Source) { logger := log.FromContext(ctx) ref := plumbing.ReferenceName(record.Ref) @@ -185,12 +185,6 @@ return } - scheme := "https" - if c.Core.Dev { - scheme = "http" - } - knotHost := fmt.Sprintf("%s://%s", scheme, source.Key()) - deploy := &models.SiteDeploy{ RepoAt: repo.RepoAt().String(), Branch: siteConfig.Branch, @@ -199,7 +193,7 @@ Trigger: models.SiteDeployTriggerPush, } - deployErr := sites.Deploy(ctx, cfClient, knotHost, repo.RepoIdentifier(), record.RepoName, siteConfig.Branch, siteConfig.Dir) + deployErr := sites.Deploy(ctx, cfClient, cfg, repo, siteConfig.Branch, siteConfig.Dir) if deployErr != nil { logger.Error("sites: R2 sync failed on push", "repo", repo.RepoIdentifier(), "err", deployErr) deploy.Status = models.SiteDeployStatusFailure -- tangled.sh