tuqo

CI/CD for a static site without GitHub Actions

To publish a static site on every commit, people often reach for GitHub Actions: they write a .yml pipeline, set up build steps and secrets, sometimes run their own runner. For a regular static site that is overkill. Tuqo gives you the same result, push → site in production, with no YAML and no runners.

The difference

GitHub Actions + hostingTuqo Git CD
Configa .yml pipeline written by handnone, you link the repo in the panel
Buildyour own steps and runnersautomatic: Node 20, npm ci && npm run build
Deploy secretsset up by handnot needed
Webhook—created automatically
Rollbackby handone click (paid plans keep several versions)

How to set it up

  1. Open the site in the Tuqo panel → the Git CD tab.
  2. Connect a Git service: GitHub or GitFlic with your account; GitVerse, GitLab or Gitea with an access token (for self-hosted GitLab or Gitea, enter your instance URL).
  3. Pick the repository and the production branch → Link. The webhook is created for you.

From then on it is business as usual: git push to the production branch, and the new version is published automatically.

What about the build

Tuqo detects the project type on its own:

  • package.json present → a build on Node 20, output taken from dist/, build/ or out/ (Vite, React, Vue, Astro, SvelteKit static, Next.js export and more);
  • no package.json → published as is (index.html must be at the root).

The build runs in an isolated sandbox with time and memory limits. The hosting is static only: server code (SSR, PHP, a Node server) does not run.

When you still need GitHub Actions

If you need custom steps (tests, linters, generating content from external APIs at build time, a non-standard runtime), Actions is more flexible. You can keep that pipeline and publish its output to Tuqo with one CLI command; see deploy from GitHub Actions and GitLab CI. But for “build the frontend and publish the static files”, Git CD does the job without a pipeline.

Git CD → · Auto-deploy from Git: the full guide →