返回应用列表
Woodpecker

Deploy Woodpecker on Your Own Server

Simple CI engine with great extensibility. It runs your pipelines inside Docker containers.

🛠️ Developer Tools

想更快部署 Woodpecker到服务器?试试 Senate,一条命令完成部署,自动配置 HTTPS 和监控。

立即开始

什么是 Woodpecker?

Woodpecker is a simple CI engine with great extensibility. It is a community fork of the Drone CI system. It runs your pipelines inside Docker containers, so if you are already using them in your daily workflow, you'll love Woodpecker for sure. You should set up `WOODPECKER_HOST` and at least one version control system (e.g. `WOODPECKER_GITEA` for Gitea or `WOODPECKER_GITHUB` for GitHub etc.).

自托管 Woodpecker

按照以下步骤在您的服务器上部署。

1

安装 Docker

如果服务器上已安装 Docker,可跳过此步骤。

curl -fsSL https://get.docker.com | sh
2

配置

自定义以下设置。大多数情况下使用默认值即可。

General
3

部署

复制配置并在服务器上运行。

services:
  woodpecker:
    image: woodpeckerci/woodpecker-server:pull_1209
    environment:
      WOODPECKER_ADMIN: ""
      WOODPECKER_AGENT_SECRET: c0d9e35995fce4c0306eb50cd438756f
      WOODPECKER_AUTHENTICATE_PUBLIC_REPOS: "false"
      WOODPECKER_BITBUCKET: "false"
      WOODPECKER_BITBUCKET_CLIENT: ""
      WOODPECKER_BITBUCKET_SECRET: ""
      WOODPECKER_CODING: "false"
      WOODPECKER_CODING_CLIENT: ""
      WOODPECKER_CODING_GIT_MACHINE: git.coding.net
      WOODPECKER_CODING_GIT_PASSWORD: ""
      WOODPECKER_CODING_GIT_USERNAME: ""
      WOODPECKER_CODING_SCOPE: user, project, project:depot
      WOODPECKER_CODING_SECRET: ""
      WOODPECKER_CODING_SKIP_VERIFY: "false"
      WOODPECKER_CODING_URL: https://coding.net
      WOODPECKER_DATABASE_DATASOURCE: woodpecker.sqlite
      WOODPECKER_DATABASE_DRIVER: sqlite3
      WOODPECKER_DEBUG_NOCOLOR: "true"
      WOODPECKER_DEBUG_PRETTY: "false"
      WOODPECKER_DEFAULT_CLONE_IMAGE: woodpeckerci/plugin-git:latest
      WOODPECKER_DOCKER_CONFIG: ""
      WOODPECKER_DOCS: https://woodpecker-ci.org/
      WOODPECKER_ESCALATE: plugins/docker,plugins/gcr,plugins/ecr,woodpeckerci/plugin-docker,woodpeckerci/plugin-docker-buildx
      WOODPECKER_GITEA: "false"
      WOODPECKER_GITEA_CLIENT: ""
      WOODPECKER_GITEA_SECRET: ""
      WOODPECKER_GITEA_SKIP_VERIFY: "false"
      WOODPECKER_GITEA_URL: https://try.gitea.io
      WOODPECKER_GITHUB: "false"
      WOODPECKER_GITHUB_CLIENT: ""
      WOODPECKER_GITHUB_MERGE_REF: "true"
      WOODPECKER_GITHUB_SECRET: ""
      WOODPECKER_GITHUB_SKIP_VERIFY: "false"
      WOODPECKER_GITHUB_URL: https://github.com
      WOODPECKER_GITLAB: "false"
      WOODPECKER_GITLAB_CLIENT: ""
      WOODPECKER_GITLAB_SECRET: ""
      WOODPECKER_GITLAB_SKIP_VERIFY: "false"
      WOODPECKER_GITLAB_URL: https://gitlab.com
      WOODPECKER_GOGS: "false"
      WOODPECKER_GOGS_GIT_PASSWORD: ""
      WOODPECKER_GOGS_GIT_USERNAME: ""
      WOODPECKER_GOGS_PRIVATE_MODE: "false"
      WOODPECKER_GOGS_SKIP_VERIFY: "false"
      WOODPECKER_GOGS_URL: https://github.com
      WOODPECKER_HOST: ""
      WOODPECKER_KEEPALIVE_MIN_TIME: ""
      WOODPECKER_LIMIT_CPU_QUOTA: "0"
      WOODPECKER_LIMIT_CPU_SET: ""
      WOODPECKER_LIMIT_CPU_SHARES: "0"
      WOODPECKER_LIMIT_MEM: "0"
      WOODPECKER_LIMIT_MEM_SWAP: "0"
      WOODPECKER_LIMIT_SHM_SIZE: "0"
      WOODPECKER_LOG_LEVEL: error
      WOODPECKER_OPEN: "false"
      WOODPECKER_ORGS: ""
      WOODPECKER_PROMETHEUS_AUTH_TOKEN: ""
      WOODPECKER_REPO_OWNERS: ""
      WOODPECKER_SESSION_EXPIRES: 72h
      WOODPECKER_STASH: "false"
      WOODPECKER_STASH_CONSUMER_KEY: ""
      WOODPECKER_STASH_CONSUMER_RSA: ""
      WOODPECKER_STASH_CONSUMER_RSA_STRING: ""
      WOODPECKER_STASH_GIT_PASSWORD: ""
      WOODPECKER_STASH_GIT_USERNAME: ""
      WOODPECKER_STASH_SKIP_VERIFY: "false"
      WOODPECKER_STASH_URL: ""
      WOODPECKER_STATUS_CONTEXT: ci/woodpecker
    volumes:
      - woodpecker-server:/var/lib/woodpecker
  woodpecker-agent:
    environment:
      WOODPECKER_AGENT_SECRET: c0d9e35995fce4c0306eb50cd438756f
      WOODPECKER_BACKEND: docker
      WOODPECKER_DEBUG_NOCOLOR: "true"
      WOODPECKER_DEBUG_PRETTY: "false"
      WOODPECKER_GRPC_SECURE: "false"
      WOODPECKER_GRPC_VERIFY: "true"
      WOODPECKER_HEALTHCHECK: "true"
      WOODPECKER_HOSTNAME: ""
      WOODPECKER_KEEPALIVE_TIME: ""
      WOODPECKER_KEEPALIVE_TIMEOUT: 20s
      WOODPECKER_LOG_LEVEL: error
      WOODPECKER_MAX_PROCS: "1"
      WOODPECKER_SERVER: woodpecker:9000
      WOODPECKER_USERNAME: x-oauth-basic
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - woodpecker
volumes:
  woodpecker-server: {}

然后运行:

docker compose up -d
4

访问

启动后,访问您的应用: http://localhost:8000

为什么要自托管 Woodpecker?

完全数据所有权

数据保存在您的服务器上,无第三方访问。

无月费

只需支付服务器费用,无按席位或用量收费。

完全控制

按您的需求自定义、备份和扩展。

隐私与合规

满足 GDPR、HIPAA 或内部安全要求。

技术细节

Docker 镜像

woodpeckerci/woodpecker-server:${woodpecker_version}

想更快部署?

尝试 Senate!Senate 帮您处理 Docker、HTTPS、更新和监控。一条命令部署 300+ 应用。

在任意 Linux 服务器上安装:

sh -c "$(curl -sSL https://get.senate.sh)"