Saltearse al contenido

Deploy a GitHub web landing

Use this guide when an AI coding agent has generated a static landing page and you want to publish it from GitHub with Septiembre Cloud. The goal is simple: a real production URL backed by the repository you own.

  1. Put the landing in GitHub.
  2. Confirm it builds locally with pnpm.
  3. Create a Septiembre web app connected to that repository.
  4. Trigger the first deploy.
  5. Wait for the first successful deploy to activate and materialize the live DNS/CDN infrastructure.

You need:

  • A GitHub repository for the landing page.
  • A static build output directory such as dist, build, or out.
  • A Septiembre Cloud project where you can create apps and deploy them.
  • A build command that works without manual steps.

For pnpm projects, the common local check is:

Terminal window
pnpm install
pnpm build

If your landing uses Astro, Vite, Next static export, or another static frontend tool, the important thing is the final output directory. Septiembre syncs that output to S3 during deploy.

Ask your coding agent for the right project shape

Section titled “Ask your coding agent for the right project shape”

Give your agent the docs link and the expected deployment contract. For example:

Create a production-ready static landing page for my business.
Use pnpm commands. The app will be deployed as a Septiembre Cloud web app from GitHub.
Make sure `pnpm build` produces static files in `dist`.
Read the Septiembre API reference before assuming endpoint behavior.
Do not expect live DNS/CDN infrastructure before the first successful deploy.

In Septiembre Cloud, create a new web app and connect it to your GitHub repository and branch.

If you use the API, the source reference is ../cloud-api/docs/api-reference.md and the app creation endpoint is:

POST /api/v1/orgs/{orgID}/projects/{projectID}/apps
Authorization: Bearer <cognito-id-token>
Content-Type: application/json

Typical body:

{
"name": "my-landing",
"label": "production",
"type": "web",
"region": "us-east-2",
"github_repo_full": "my-org/my-landing",
"github_branch": "main",
"build_command": "pnpm install --frozen-lockfile && pnpm build",
"build_output_dir": "dist"
}

The user-facing lifecycle is important: web app creation stores database and GitHub configuration only. It records the app, selected region, repository, branch, build command, output directory, generated subdomain value, and production environment. It does not mean the landing is already live on DNS/CDN.

After the app exists, trigger a deployment:

POST /api/v1/orgs/{orgID}/projects/{projectID}/apps/{appID}/deployments
Authorization: Bearer <cognito-id-token>
Content-Type: application/json

For a web app, the deployment uses the configured GitHub branch, build command, and output directory. A release tag is not required for the web landing flow.

During the build, Septiembre clones the repository, checks out the ref, runs your build command, and syncs the output directory to the regional S3 bucket.

What happens on the first successful deploy

Section titled “What happens on the first successful deploy”

The first successful deploy is the activation point. After the build succeeds, Septiembre activates and materializes the live DNS/CDN infrastructure:

  • Creates or records the CloudFront tenant for the web app.
  • Creates the Route53 CNAME for the app subdomain.
  • Enables the tenant when the app is public.
  • Invalidates the CDN cache so visitors receive the new files.

That is why a web app can exist in the dashboard before the public URL is ready. The app has configuration first; the live delivery path appears after the first successful deploy.

After the first success, later deploys rebuild the project, sync the output to S3, and invalidate the CDN cache. They do not recreate the live DNS/CDN infrastructure each time.

Start with the failure detail endpoint or the Cloud UI failure message:

GET /api/v1/orgs/{orgID}/projects/{projectID}/apps/{appID}/deployments/{deployID}/failure

Most first-deploy failures are caused by user project configuration: missing dependencies, a build command that fails, or a wrong output directory. Run the same commands locally before retrying:

Terminal window
pnpm install
pnpm build
ls dist
  • Your GitHub repo contains the landing source and lockfile.
  • pnpm build succeeds locally.
  • The app type is web.
  • The build output directory matches the project.
  • The first successful deploy has completed.
  • The public subdomain works after DNS/CDN activation.