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