

















Open Source CI/CD
One binary. Any database. Any queue. Runs anywhere.
Apache 2.0 licensed. Inspired by Concourse CI.
Dogfooding
The pipeline that builds, tests, and deploys PikoCI is publicly visible. PR checks, integration tests against six backends, multi-arch Docker builds, zero-downtime self-redeployment. No account required to view it.
pikoci / main
Loading live pipeline...
Public pipeline · no login required · view build status, logs, and pipeline graph without an account View pipeline.hcl on GitHub →
Why PikoCI
01
No Docker Compose. No Kubernetes. No setup scripts. Download and run.
02
Start in memory. Add SQLite for persistence. Add Postgres and distributed workers at scale. The tool never changes.
03
The pipeline is the environment. Run it anywhere. pikoci run -p pipeline.hcl -j test runs any job on your laptop — no server, no push, no waiting. Override resources with local paths. Iterate before touching CI.
04
Resource types, runners, services, and secret backends. Define once, reuse across jobs. Source any of them from a URL.
05
Terraform-style syntax. More expressive than YAML. Readable, reviewable, versionable.
06
Bundle the binary with a pipeline file and SQLite. Move it anywhere. Run it instantly.
Define your pipeline
Clean HCL syntax. Resources flow through jobs. Dependencies are explicit. No magic.
resource_type "git" { source = "pikoci://git" } resource "git" "app" { params { url = "https://github.com/myorg/app.git" name = "app" } } job "test" { get "git" "app" { trigger = true } task "run-tests" { run "docker" { image = "golang:1.25" cmd = "cd app && go test ./..." } } }
service_type "postgres" { start "exec" { path = "/bin/sh" args = ["-ec", "docker run -d --name pikoci-pg -p 5432:5432 -e POSTGRES_PASSWORD=test postgres:16"] } ready_check "exec" { path = "/bin/sh" args = ["-ec", "docker exec pikoci-pg pg_isready"] interval = "2s" timeout = "30s" } stop "exec" { path = "/bin/sh" args = ["-ec", "docker rm -f pikoci-pg"] } } job "integration" { service "postgres" {} get "cron" "tick" { trigger = true } task "test" { run "exec" { path = "make" args = ["test"] } } }
secret_type "env" { source = "pikoci://file" format = "env" path = "/etc/pikoci/secrets.env" } variable "deploy_token" { type = string secret "env" { key = "DEPLOY_TOKEN" } } resource_type "git" { source = "pikoci://git" } resource "git" "app" { params { url = "https://github.com/myorg/app.git" name = "app" token = var.deploy_token } } job "deploy" { get "git" "app" { trigger = true } task "push" { run "exec" { path = "/bin/sh" args = ["-c", "cd app && ./deploy.sh"] } } }
Quick start
Three commands. No dependencies. Your pipeline is already loaded and running.
$ curl -L https://github.com/pikoci/pikoci/releases/latest/download/linux-amd64 -o pikoci && chmod +x pikoci $ ./pikoci server --db-system mem --pubsub-system mem --run-worker --pipeline-config pipeline.hcl
Your pipeline is already loaded and running.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。