This GitHub Action deploys to Now and aliases the successful deployment to a predictable URL according to the following conditions:
- We run
now
without any arguments to get the "root" deployment URL, which is generated by Now. - If the branch is
master
, we treat thealias
field innow.json
as the production URL and:- If there is a
rules.json
:now alias <deployment> <name>.now.sh
to create a fallback URL for path aliasesnow alias <deployment> <production> -r rules.json
to set up path aliases
now alias <deployment> <production>
to alias the production URL.
- If there is a
now alias <deployment> <name>-<branch>.now.sh
to alias the root deployment to a branch-specific URL.
The app name (<name>
) and branch (<branch>
) are both "slugified" to strip invalid characters so that they'll work as URLs. Leading non-word characters are removed, and any sequence of characters that isn't alphanumeric or -
is replaced with a single -
. In other words, @primer/css
becomes primer-css
, shawnbot/some_branch
becomes shawnbot-some-branch
, and so on.
Two status checks will be listed for this action in your checks: deploy is the action's check, and deploy/alias is a commit status created by the action that reports the URL and links to it via "Details":
Note: Checks listed in the PR merge box (above) always point to the most recent commit, but you can access the list of checks for the last commit of every push by clicking on the status icon (usually a or ) in your repo's "Commits" and "Branches" pages, or commit history on a PR page:
To use this action in your own workflow, add the following snippet to your .github/main.workflow
file:
action "deploy" {
uses = "primer/deploy@master"
secrets = [
"GITHUB_TOKEN",
"NOW_TOKEN",
]
}
You will need to provide a Zeit token value for the NOW_TOKEN
secret in the Actions visual editor if you haven't already.
To avoid racking up failed deployments, we suggest that you place this action after any linting and test actions.
It's possible to pass additional arguments through to the now
CLI via the args
field in your workflow action. Because the primer-deploy
CLI accepts options of its own (such as --dry-run
), you need to prefix any now
arguments with --
:
action "deploy" {
uses = "primer/deploy@master"
+ args = "-- --meta autoDeployed=true"
You can also use args
to deploy a subdirectory, e.g. docs
:
action "deploy" {
uses = "primer/deploy@master"
+ args = "-- docs"