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

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

Input Default Applies to Description
app_path . all deployments Path 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.
dns my.preview.run all deployments DNS suffix used for generated preview hostnames. Built-in alternatives include rev1.click through rev9.click.
max_domain_length 62 all deployments Maximum generated fully qualified domain name length. Must stay at or below 62 for Let's Encrypt compatibility.
label pullpreview github-sync workflow runs Label that triggers preview deployments and scopes scheduled cleanup.
github_token ${{ github.token }} github-sync workflow runs GitHub token used for labels, PR comments, collaborator lookup, and SSH public key lookup.
admins @collaborators/push all deployments Comma-separated GitHub logins whose SSH public keys are installed on the preview instance.
ports 80/tcp,443/tcp all deployments Public firewall ports to expose. SSH port 22 is always added automatically.
cidrs 0.0.0.0/0 all deployments Source IPs allowed to reach the exposed ports.
default_port 80 all deployments Port used when building the preview URL and the url output. If proxy_tls is enabled, PullPreview switches this to 443.
compose_files docker-compose.yml deployment_target: compose Comma-separated Compose files passed to docker compose. Not supported for Helm previews except for the untouched default value.
compose_options --build deployment_target: compose Additional arguments appended to docker compose up. Not supported for Helm previews except for the untouched default value.
deployment_target compose all deployments Deployment target to use: compose or helm.
chart "" deployment_target: helm Helm chart reference. Supported forms: local path, repo chart name, or OCI reference. Required for Helm previews.
chart_repository "" deployment_target: helm Helm 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: helm Comma-separated Helm values files relative to app_path.
chart_set "" deployment_target: helm Comma-separated Helm --set overrides. Supports placeholder expansion such as {{ release_name }} and {{ namespace }}.
license "" all deployments PullPreview license key.
instance_type small all deployments Provider-specific instance size. Lightsail uses bundle names such as small or medium. Hetzner accepts server types such as cpx21.
region "" all deployments Provider region/location override. Defaults are provider-specific: Lightsail uses us-east-1, Hetzner uses nbg1.
deployment_variant "" github-sync workflow runs Optional short suffix used to run multiple preview environments per pull request. Maximum length is 4 characters.
image ubuntu-24.04 all deployments Provider image override. It is used by Hetzner and ignored by Lightsail.
provider lightsail all deployments Cloud provider: lightsail or hetzner.
registries "" deployment_target: compose Private registry credentials for Compose deployments, for example docker://user:password@ghcr.io. Not supported for Helm previews.
proxy_tls "" all deployments Enables 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 deployments Path to a local bash script relative to app_path, executed inline over SSH before the deployment target runs.
ttl infinite github-sync workflow runs Maximum 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