Context
Deploying {{project_name}} ({{project_type}}) to Fly.io. You will follow a strict 6-phase Deployment Lifecycle Contract.
Instructions
Execute the following phases in order:
Phase 1: Authentication
- Ensure the
FLY_API_TOKENenvironment variable is set to a valid token. - If running locally, authenticate interactively with
fly auth login. For automated agents, ensure the token is provided. - Validate by running
fly auth whoami.
Phase 2: Build
- Prepare the artifacts for deployment.
- Fly.io uses a
fly.tomlconfiguration file and aDockerfile(or buildpacks) to build your application on their builders. - Ensure the
Dockerfilebuilds successfully locally (docker build .) to catch any errors early. - If your project requires generating static assets before pushing, run your framework's build command (e.g.,
npm run build).
Phase 3: Install / Provisioning
- Ensure the target Fly.io application exists. If not, initialize it using
fly launch --no-deploy. - Check the
fly.tomlfile to ensure the application name, regions, and environment variables are correctly configured. - Ensure required secrets are set using
fly secrets set KEY=value. - If your application requires a database (Postgres, Redis), ensure it's provisioned via
fly postgres createorfly redis createand attached to the app.
Phase 4: Deploy
- Ship the artifact to Fly.io.
- Run
fly deployto build and deploy your application. You can append--remote-onlyto force the build on Fly's remote builders. - Use
--detachif you do not want to wait for health checks to pass in the foreground (not recommended for automated agents unless monitoring separately).
Phase 5: Checking
- Verify the deployment was successful.
- Run
fly statusto check the application's instances and their health status. - Retrieve the public URL using
fly infoand usecurl -sSf <URL>to ensure the application returns a 200 OK status code. - Check logs via
fly logsif the deployment fails or instances are crashing.
Phase 6: Update / Rollback
- If Phase 5 fails, immediately initiate a rollback.
- Fly.io supports rolling back to previous deployments. Identify the previous image or release version and run
fly deploy -i <previous-image-ref>. - Note the failure in the progress log.
Validation
- Fly.io authentication (
fly auth whoami) succeeds. - Build succeeds (locally or remote).
- Application instances are running (
fly status). - Health check (curl) returns 200 OK.