CI/CD pipelines
A pipeline links a GitHub repository and branch to one of your instances. When you push to that branch, SpliceRun fetches the commit, optionally runs a build script, and then rebuilds and restarts the instance's containers. It removes the step where you log in somewhere and restart something by hand after every change.
Deploys run on SpliceRun's shared hosting infrastructure, so a pipeline can only target an instance on a Shared plan. On Bring your own server and on a Dedicated server, the instance's files live on that machine rather than on ours.
Choosing one of those instances is refused when you create the pipeline, with a message saying why - you will not get as far as wiring up a webhook that could never work.
Only the workspace owner and admins can create, deploy, pause, or delete a pipeline. Members see the pipeline list marked Read only. See Team management.
Where to find it
Left sidebar → Infrastructure → CI / CD. The older /dashboard/deployments address
redirects here.
Creating a pipeline
You need at least one active instance first - the Create pipeline button stays disabled until you have one.
- Open Infrastructure → CI / CD.
- Fill in Create pipeline:
- Name - optional. Left empty, it is derived from
owner/repo. - Branch - defaults to
main. Only pushes to this branch deploy. - GitHub repo - in
owner/repoform, for exampleacme/n8n-workflows. - GitHub token - optional, and only needed for a private repository. It is encrypted at rest.
- Build command - defaults to
npm run build. See the allowlist below. - Target instance - the instance this pipeline deploys to.
- Name - optional. Left empty, it is derived from
- Click Create pipeline.
- A payload URL and a secret appear. Copy both now.
The webhook secret is displayed only on the screen that creates the pipeline. It is never shown again and cannot be retrieved later. If you lose it, delete the pipeline and create a new one.
Connecting the webhook in GitHub
- In your repository, go to Settings → Webhooks → Add webhook.
- Payload URL - paste the URL from step 4 above, including everything after the
?. - Content type - select
application/json. - Secret - paste the secret from step 4.
- Which events - choose Just the push event.
- Save. GitHub sends a ping, which SpliceRun accepts.
Push to the branch, and the deploy is queued within a minute.
Deploy controls
Each pipeline row carries its own controls:
| Control | What it does |
|---|---|
| Deploy now | Queues a deploy immediately, using the last commit the pipeline saw. Only shown while the pipeline is active. |
| Pause / Resume | Stops and restarts automatic deploys. The pipeline and its webhook secret are kept. |
| Delete | Removes the pipeline. The instance itself is untouched. |
The Last deploy column shows the short commit hash and the time of the most recent successful deploy.
What a deploy actually does
- Clones the repository, or fetches and hard-resets it to the branch tip, then checks out the pushed commit.
- If a
package.jsonis present, installs dependencies and runs your build command. - Rebuilds and restarts the containers for the target instance.
Limits and things worth knowing
- The build command is restricted to a single package-manager script. Allowed forms are
npm run <script>,yarn <script>,pnpm <script>,pnpm run <script>, andnpx <script>. No chained commands, no shell operators, no extra arguments. Anything else is rejected when you save the pipeline. This is deliberate - the command runs on shared infrastructure. - Repository files are not copied into your instance. A deploy fetches your repository, runs the build, and recreates the containers. It does not place your files inside the instance's data directory.
- A
docker-compose.ymlin your repository is not applied to your instance, and the deploy log says so explicitly when your repository contains one. Your instance keeps the container definition SpliceRun manages for it - the image, its resource limits and its sandboxing. That definition is what keeps instances isolated from each other on a shared machine, so it is not something a file in a git repository is allowed to replace. Your application code and build steps deploy normally. If you need a runtime change, ask support. - Only the exact branch deploys. A push to any other branch is accepted and ignored.
- Only push events deploy. Pull requests, tags, and releases are ignored.
- The same commit is not deployed twice within an hour.
- Pipelines created in the dashboard always auto-deploy on push. Use Pause if you want to stop that for a while.
- While a pipeline is paused, GitHub's webhook deliveries fail and appear red in GitHub's delivery log. That is expected; Resume restores them.
- Rate limits per team: 10 new pipelines an hour, and 20 manual deploys an hour.
- A pipeline name must be unique within your team.
If a deploy fails, the pipeline's status reflects it and the failure reason is recorded. Contact Support with the pipeline name and the approximate time, and see Getting help for what to include.