跳到主要内容

发行包

官方包

  • DEB
  • RPM

预构建的包可在 GitHub releases 页面获取。可以使用发行版的包管理器安装这些包。

RELEASE_VERSION=$(curl -s https://api.github.com/repos/woodpecker-ci/woodpecker/releases/latest | grep -Po '"tag_name":\s"v\K[^"]+')

# Debian/Ubuntu (x86_64)
curl -fLOOO "https://github.com/woodpecker-ci/woodpecker/releases/download/v${RELEASE_VERSION}/woodpecker-{server,agent,cli}_${RELEASE_VERSION}_amd64.deb"
sudo apt --fix-broken install ./woodpecker-{server,agent,cli}_${RELEASE_VERSION}_amd64.deb

# CentOS/RHEL (x86_64)
sudo dnf install https://github.com/woodpecker-ci/woodpecker/releases/download/v${RELEASE_VERSION}/woodpecker-{server,agent,cli}-${RELEASE_VERSION}.x86_64.rpm

包安装将为 Woodpecker 服务器和代理创建 systemd 服务文件以及示例环境文件。要配置服务器,请将示例环境文件 /etc/woodpecker/woodpecker-server.env.example 复制到 /etc/woodpecker/woodpecker-server.env 并调整值。

/usr/local/lib/systemd/system/woodpecker-server.service
[Unit]
Description=WoodpeckerCI server
Documentation=https://woodpecker-ci.org/docs/administration/server-config
Requires=network.target
After=network.target
ConditionFileNotEmpty=/etc/woodpecker/woodpecker-server.env
ConditionPathExists=/etc/woodpecker/woodpecker-server.env

[Service]
Type=simple
EnvironmentFile=/etc/woodpecker/woodpecker-server.env
User=woodpecker
Group=woodpecker
ExecStart=/usr/local/bin/woodpecker-server
WorkingDirectory=/var/lib/woodpecker/
StateDirectory=woodpecker

[Install]
WantedBy=multi-user.target
/etc/woodpecker/woodpecker-server.env
WOODPECKER_OPEN=true
WOODPECKER_HOST=${WOODPECKER_HOST}
WOODPECKER_GITHUB=true
WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT}
WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET}
WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}

安装代理后,将示例环境文件 /etc/woodpecker/woodpecker-agent.env.example 复制到 /etc/woodpecker/woodpecker-agent.env 并调整值。代理将自动向服务器注册。

/usr/local/lib/systemd/system/woodpecker-agent.service
[Unit]
Description=WoodpeckerCI agent
Documentation=https://woodpecker-ci.org/docs/administration/configuration/agent
Requires=network.target
After=network.target
ConditionFileNotEmpty=/etc/woodpecker/woodpecker-agent.env
ConditionPathExists=/etc/woodpecker/woodpecker-agent.env

[Service]
Type=simple
EnvironmentFile=/etc/woodpecker/woodpecker-agent.env
User=woodpecker
Group=woodpecker
ExecStart=/usr/local/bin/woodpecker-agent
WorkingDirectory=/var/lib/woodpecker/
StateDirectory=woodpecker

[Install]
WantedBy=multi-user.target
/etc/woodpecker/woodpecker-agent.env
WOODPECKER_SERVER=localhost:9000
WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}

社区包

信息

Woodpecker 本身不负责创建这些包。请联系负责为各个发行版打包 Woodpecker 的人员。

NixOS

信息

此模块不由 Woodpecker 开发人员维护。 如果您遇到问题,请在维护该模块的 nixpkgs 仓库 中打开错误报告。

理论上,NixOS 安装与二进制安装非常相似,支持多种后端。 实际上,设置在 NixOS 配置中以声明方式指定,无需手动步骤。

{ config
, ...
}:
let
domain = "woodpecker.example.org";
in
{
# 这会通过 let's encrypt 自动设置证书
security.acme.defaults.email = "acme@example.com";
security.acme.acceptTerms = true;

# 设置 nginx 代理为我们处理 tls
services.nginx = {
enable = true;
openFirewall = true;
recommendedTlsSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
virtualHosts."${domain}" = {
enableACME = true;
forceSSL = true;
locations."/".proxyPass = "http://localhost:3007";
};
};

services.woodpecker-server = {
enable = true;
environment = {
WOODPECKER_HOST = "https://${domain}";
WOODPECKER_SERVER_ADDR = ":3007";
WOODPECKER_OPEN = "true";
};
# 您可以将带有环境变量的文件传递给系统,它可能看起来像:
# WOODPECKER_AGENT_SECRET=XXXXXXXXXXXXXXXXXXXXXX
environmentFile = "/path/to/my/secrets/file";
};

# 这设置了 woodpecker 代理
services.woodpecker-agents.agents."docker" = {
enable = true;
# 我们需要这个来与 podman 套接字对话
extraGroups = [ "podman" ];
environment = {
WOODPECKER_SERVER = "localhost:9000";
WOODPECKER_MAX_WORKFLOWS = "4";
DOCKER_HOST = "unix:///run/podman/podman.sock";
WOODPECKER_BACKEND = "docker";
};
# 与 woodpecker-server 相同
environmentFile = [ "/var/lib/secrets/woodpecker.env" ];
};

# 这里我们设置 podman 并启用 dns
virtualisation.podman = {
enable = true;
defaultNetwork.settings = {
dns_enabled = true;
};
};
# 这是 podman 能够通过 dns 对话所需要的
networking.firewall.interfaces."podman0" = {
allowedUDPPorts = [ 53 ];
allowedTCPPorts = [ 53 ];
};
}

所有配置选项都可以通过 NixOS Search 找到。在 Awesome Woodpecker 页面上还有一些关于如何更有效地在 NixOS 中使用 Woodpecker 的额外资源,比如在管道中使用运行器的 nix-store。