aws-amplify / aws-amplify/amplify-hosting
Support separating Build and Deploy phases (or pausing before Deploy) to allow pre-building
- Dominant language
- Dockerfile
- Stars
- 481
- Forks
- 123
- PR merge metrics
- No merged PRs in 30d
Description
### Before opening, please confirm:
- [x] I have checked to see if my question is addressed in the [FAQ](https://github.com/aws-amplify/amplify-hosting/blob/master/FAQ.md).
- [x] I have [searched for duplicate or closed issues](https://github.com/aws-amplify/amplify-hosting/issues?q=is%3Aissue+).
- [x] I have removed any sensitive information from my code snippets and submission.
### Amplify Hosting feature
Deployments
### Is your feature request related to a problem? Please describe:
Currently, when hosting SSR applications (compute primitive) connected to a Git repository on Amplify Hosting, the `StartJob` API executes the build and deploy steps as a single uninterrupted job. It is not possible to execute the build phase first, retain the artifact, and then trigger only the deployment phase at a later time.
In our team's weekly release process, we want to minimize waiting time on release days. On other platforms where build and deploy can be separated, we follow this workflow:
- **Release Day - 1:** Run the build phase and pause the CD pipeline.
- **Release Day:** Resume the pipeline to execute only the deployment phase (skipping the build waiting time).
With Amplify Hosting, we are forced to run the full build during the actual release window, which increases release time and operational overhead.
### Describe how you'd like this feature to work
We would like Amplify Hosting to support splitting or pausing the deployment process in one of the following ways:
1. **Explicit separation of Build and Deploy phases:** Provide an option or API to trigger a "Build-only" job, retain the generated artifact, and subsequently trigger a "Deploy-only" job using that artifact.
2. **Approval/Pause step between Build and Deploy:** Allow the pipeline to automatically pause *after* the build phase finishes, enabling us to manually trigger/approve the actual deployment on release day.
### Describe alternatives you've considered
We considered performing the build entirely on an external CI/CD tool (e.g., GitHub Actions or CircleCI) and deploying via `CreateDeployment` / `StartDeployment` APIs. However, we prefer using Amplify Hosting's managed build environment for SSR (compute primitive) applications rather than offloading the build step elsewhere.
### Additional context
We reached out to AWS Support regarding this workflow, and they confirmed that `StartJob` currently treats build and deploy as a single atomic job. While Issue #103 touches on manual triggers and approvals, our specific request focuses on separating the phases to pre-build artifacts in advance for scheduled releases.
Contributor guide
Research direction
Start by reading the StartJob, CreateDeployment, and StartDeployment API behavior described in the issue, then compare Issue #103 for related manual-trigger and approval work. Define how a build-only job would retain an artifact and how a later deploy-only or approval step would use it; done means the build and deploy phases can be scheduled separately without rebuilding.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws
- Domain
- ci-cd, cloud, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100