pullpreview/Preview Environments for GitHub
Ephemeral preview deployments of your app for every pull request.
View on GitHubTrust Signals
- Scorecard Score
- Scorecard 2–4scored Jul 6, 2026
- Maintenance Recency
- Activelast commit Mar 13, 2026
- License
- None
Pinned Snippet
uses: pullpreview/action@179f963326f568dc1665707c796aaac590667632 # v6.2.0tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| app_path | The path to your application containing a docker-compose file | no | . |
| dns | Which DNS suffix to use | — | my.preview.run |
| max_domain_length | Maximum length of fully qualified domain name. Note that it cannot be greater than 62 characters due to LetsEncrypt restrictions. | — | 62 |
| label | Label to use for triggering preview deployments | — | pullpreview |
| github_token | The GitHub access token used to perform GitHub API operations (labels, comments, collaborator/keys lookup). | — | ${{ github.token }} |
| admins | Logins of GitHub users that will have their SSH key installed on the instance, comma-separated | no | @collaborators/push |
| ports | Ports to open for external access on the preview server (port 22 is always open), comma-separated | no | 80/tcp,443/tcp |
| cidrs | The IP address, or range of IP addresses in CIDR notation, that are allowed to connect to the instance | no | 0.0.0.0/0 |
| default_port | The port to use when building the preview URL | no | 80 |
| compose_files | Compose files to use when running docker-compose up, comma-separated | no | docker-compose.yml |
| compose_options | Additional options to pass to docker-compose up, comma-separated | no | --build |
| deployment_target | Deployment target to use: compose or helm (helm supports Hetzner and Lightsail) | no | compose |
| chart | Helm chart reference: local path, repo chart name, or OCI reference (helm target only) | no | "" |
| chart_repository | Helm repository URL used when chart is a repo chart name (helm target only) | no | "" |
| chart_values | Helm values files relative to app_path, comma-separated (helm target only) | no | "" |
| chart_set | Additional Helm --set overrides, comma-separated (helm target only) | no | "" |
| license | PullPreview license | no | "" |
| instance_type | Instance type to use | no | small |
| region | Provider region (AWS region or Hetzner location), overrides provider defaults | no | "" |
| deployment_variant | Deployment variant, which allows launching multiple deployments per PR (4 chars max) | no | "" |
| image | Instance image (Hetzner only; ignored by AWS) | no | ubuntu-24.04 |
| provider | Cloud provider to use: lightsail, hetzner | no | lightsail |
| registries | Names of private registries to authenticate against for compose deployments. E.g. docker://username:password@ghcr.io | no | "" |
| proxy_tls | Enable automatic HTTPS forwarding with Let's Encrypt (format: service:port, e.g. web:80) | no | "" |
| pre_script | Path to a local bash script (relative to app_path) executed inline over SSH on the instance before docker compose | no | "" |
| templated_url | Template for the preview URL displayed in PR comments and outputs (use {{ pullpreview_url }} as placeholder, e.g. {{ pullpreview_url }}/custom/path?key=value) | no | "" |
| ttl | Maximum time to live for deployments (e.g. 10h, 5d, infinite) | no | infinite |
Outputs
| name | description |
|---|---|
| live | Whether this run produced a live preview deployment |
| url | The URL of the application on the preview server |
| host | The hostname or IP address of the preview server |
| username | The username that can be used to SSH into the preview server |