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.
Quick path
Section titled “Quick path”- Put the landing in GitHub.
- Confirm it builds locally with pnpm.
- Create a Septiembre
webapp connected to that repository. - Trigger the first deploy.
- Wait for the first successful deploy to activate and materialize the live DNS/CDN infrastructure.
Before you start
Section titled “Before you start”You need:
- A GitHub repository for the landing page.
- A static build output directory such as
dist,build, orout. - 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:
pnpm installpnpm buildIf 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.Create the web app
Section titled “Create the web app”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}/appsAuthorization: Bearer <cognito-id-token>Content-Type: application/jsonTypical 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.
Trigger the first deploy
Section titled “Trigger the first deploy”After the app exists, trigger a deployment:
POST /api/v1/orgs/{orgID}/projects/{projectID}/apps/{appID}/deploymentsAuthorization: Bearer <cognito-id-token>Content-Type: application/jsonFor 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.
What happens on later deploys
Section titled “What happens on later deploys”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.
If the deploy fails
Section titled “If the deploy fails”Start with the failure detail endpoint or the Cloud UI failure message:
GET /api/v1/orgs/{orgID}/projects/{projectID}/apps/{appID}/deployments/{deployID}/failureMost 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:
pnpm installpnpm buildls distSuccess checklist
Section titled “Success checklist”- Your GitHub repo contains the landing source and lockfile.
pnpm buildsucceeds 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.