Skip to content
Cyril Rohr edited this page Mar 13, 2026 · 18 revisions

The PullPreview action supports the following with: inputs from action.yml.

InputDefaultApplies toDescription
app_path.all deploymentsPath to your application. For compose, this is where PullPreview resolves Compose files. For helm, this is the root used for local chart values files and app tree sync.
dnsmy.preview.runall deploymentsDNS suffix used for generated preview hostnames. Built-in alternatives include rev1.click through rev9.click.
max_domain_length62all deploymentsMaximum generated fully qualified domain name length. Must stay at or below 62 for Let's Encrypt compatibility.
labelpullpreviewgithub-sync workflow runsLabel that triggers preview deployments and scopes scheduled cleanup.
github_token${{ github.token }}github-sync workflow runsGitHub token used for labels, PR comments, collaborator lookup, and SSH public key lookup.
admins@collaborators/pushall deploymentsComma-separated GitHub logins whose SSH public keys are installed on the preview instance.
ports80/tcp,443/tcpall deploymentsPublic firewall ports to expose. SSH port 22 is always added automatically.
cidrs0.0.0.0/0all deploymentsSource IPs allowed to reach the exposed ports.
default_port80all deploymentsPort used when building the preview URL and the url output. If proxy_tls is enabled, PullPreview switches this to 443.
compose_filesdocker-compose.ymldeployment_target: composeComma-separated Compose files passed to docker compose. Not supported for Helm previews except for the untouched default value.
compose_options--builddeployment_target: composeAdditional arguments appended to docker compose up. Not supported for Helm previews except for the untouched default value.
deployment_targetcomposeall deploymentsDeployment target to use: compose or helm.
chart""deployment_target: helmHelm chart reference. Supported forms: local path, repo chart name, or OCI reference. Required for Helm previews.
chart_repository""deployment_target: helmHelm repository URL used when chart is a repo chart name such as wordpress. Do not set it for local chart paths or OCI references.
chart_values""deployment_target: helmComma-separated Helm values files relative to app_path.
chart_set""deployment_target: helmComma-separated Helm --set overrides. Supports placeholder expansion such as {{ release_name }} and {{ namespace }}.
license""all deploymentsPullPreview license key.
instance_typesmallall deploymentsProvider-specific instance size. Lightsail uses bundle names such as small or medium. Hetzner accepts server types such as cpx21.
region""all deploymentsProvider region/location override. Defaults are provider-specific: Lightsail uses us-east-1, Hetzner uses nbg1.
deployment_variant""github-sync workflow runsOptional short suffix used to run multiple preview environments per pull request. Maximum length is 4 characters.
imageubuntu-24.04all deploymentsProvider image override. It is used by Hetzner and ignored by Lightsail.
providerlightsailall deploymentsCloud provider: lightsail or hetzner.
registries""deployment_target: composePrivate registry credentials for Compose deployments, for example docker://user:password@ghcr.io. Not supported for Helm previews.
proxy_tls""all deploymentsEnables PullPreview-managed HTTPS with Let's Encrypt. For Compose, the format is service:port. For Helm, the same value targets a Kubernetes Service and is required.
pre_script""all deploymentsPath to a local bash script relative to app_path, executed inline over SSH before the deployment target runs.
ttlinfinitegithub-sync workflow runsMaximum preview lifetime such as 10h, 5d, or infinite. Scheduled cleanup removes expired deployments and labels.

Target-specific rules

  • compose is the default target.
  • helm requires both chart and proxy_tls.
  • helm rejects registries.
  • helm rejects customized compose_files and compose_options.
  • pre_script works for both targets.

proxy_tls notes

  • For compose, PullPreview injects a Caddy sidecar in front of the target Compose service.
  • For helm, PullPreview deploys a Caddy Deployment in the preview namespace and routes traffic to the Kubernetes Service named by proxy_tls.
  • Helm proxy_tls values support placeholders:
    • {{ release_name }}
    • {{ namespace }}
  • Helm chart_set values also support:
    • {{ pullpreview_url }}
    • {{ pullpreview_public_dns }}
    • {{ pullpreview_public_ip }}
    • {{ release_name }}
    • {{ namespace }}

Provider notes

  • admins: "@collaborators/push" loads up to the first 100 GitHub collaborators with push permission and logs a warning if more pages exist.
  • SSH public keys fetched from GitHub are cached between workflow runs through the action cache.
  • provider: hetzner requires both HCLOUD_TOKEN and HETZNER_CA_KEY.
  • For Hetzner, PullPreview uses root as the SSH username and defaults region to nbg1, image to ubuntu-24.04, and instance_type to cpx21 when you leave it empty or use small/micro.

See also:

Clone this wiki locally