Our GitHub integration depends on the same public APIs that we document and share with our customers.
In any distributed system such as ours, it is accepted that all kinds of transient failures can occur. For example, we might be able to build your project, but the API call to perform an alias might transitively fail.
In the spirit of synchronization, we provide you with strong guarantees that we will back off and retry the operation until the state between GitHub and your Now deployment and subsequent alias converges.
In other words, once GitHub notifies us and successfully queues the job with us, we ensure its successful (eventual) execution.
One of the highlights of our system is that we consistently map all code and configuration to a unique URL.
In other words, if you do not make any changes to your code and run now, we will give you the URL for the deployment we already have.
Deployments with no difference in content to previous deployments will result in the same link to the first deployment, instantly.
This property happens to be critical when the need to quickly roll back a change arises.
Consider the following example:
Your master branch is perfectly in sync to Now.
A reviewer merges a PR with a change and forgets to thoroughly verify the changes.
When the deployment builds and is put online, you realize the application does not look good.
You, therefore, revert the PR and merge it. In this step, the code and configuration now perfectly matches a deployment URL Now previously had! Therefore, Now does not need to re-create nor re-build anything, and the alias is performed in a matter of milliseconds.
Reverting a change will result in an instant rollback.