Woodpecker CI 代理(Agent)配置完全指南

Woodpecker CI 代理(Agent)配置完全指南

概述

Woodpecker CI 是一个简单而强大的持续集成/持续部署(CI/CD)引擎,其代理(Agent)系统是其分布式架构的核心组件。代理负责执行实际的流水线任务,与服务器(Server)协同工作,实现高效的CI/CD流程。

本文将深入探讨Woodpecker Agent的完整配置指南,涵盖从基础设置到高级优化的各个方面。

核心架构

mermaid

基础配置

最小配置要求

每个Woodpecker Agent至少需要以下两个环境变量:

WOODPECKER_SERVER=localhost:9000
WOODPECKER_AGENT_SECRET="your-shared-secret-goes-here"

环境变量详解

变量名默认值描述必需
WOODPECKER_SERVERlocalhost:9000服务器gRPC地址
WOODPECKER_AGENT_SECRET共享密钥,用于身份验证
WOODPECKER_HOSTNAME系统主机名代理主机名标识
WOODPECKER_MAX_WORKFLOWS1并行工作流数量

代理认证机制

Woodpecker支持两种代理认证方式:

1. 系统令牌(System Token)方式

mermaid

2. 代理令牌(Agent Token)方式

mermaid

完整配置示例

Docker Compose部署

version: '3'

services:
  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    environment:
      - WOODPECKER_SERVER=woodpecker-server:9000
      - WOODPECKER_AGENT_SECRET=your-secret-key-here
      - WOODPECKER_MAX_WORKFLOWS=4
      - WOODPECKER_HOSTNAME=agent-01
      - WOODPECKER_BACKEND=docker
      - WOODPECKER_LOG_LEVEL=info
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - woodpecker-server
    restart: unless-stopped

系统服务配置(Systemd)

创建服务文件 /etc/systemd/system/woodpecker-agent.service

[Unit]
Description=Woodpecker CI Agent
After=network.target
Requires=network.target

[Service]
Type=simple
User=woodpecker
Group=woodpecker
EnvironmentFile=/etc/woodpecker/agent.env
ExecStart=/usr/local/bin/woodpecker-agent
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

环境配置文件 /etc/woodpecker/agent.env

WOODPECKER_SERVER=woodpecker.example.com:9000
WOODPECKER_AGENT_SECRET=your-generated-secret
WOODPECKER_MAX_WORKFLOWS=2
WOODPECKER_HOSTNAME=production-agent-01
WOODPECKER_LOG_LEVEL=info
WOODPECKER_BACKEND=docker

高级配置选项

后端引擎配置

Woodpecker支持多种后端引擎:

后端类型配置变量适用场景
DockerWOODPECKER_BACKEND=docker单机/开发环境
KubernetesWOODPECKER_BACKEND=kubernetes生产集群环境
LocalWOODPECKER_BACKEND=local直接本地执行
Docker后端配置示例
WOODPECKER_BACKEND=docker
WOODPECKER_BACKEND_DOCKER_NETWORK=woodpecker
WOODPECKER_BACKEND_DOCKER_VOLUMES=/var/run/docker.sock:/var/run/docker.sock
Kubernetes后端配置示例
WOODPECKER_BACKEND=kubernetes
WOODPECKER_BACKEND_K8S_NAMESPACE=woodpecker
WOODPECKER_BACKEND_K8S_STORAGE_CLASS=standard

网络与安全配置

# gRPC安全连接
WOODPECKER_GRPC_SECURE=true
WOODPECKER_GRPC_VERIFY=true

# 连接重试配置
WOODPECKER_CONNECT_RETRY_COUNT=10
WOODPECKER_CONNECT_RETRY_DELAY=5s

# 健康检查
WOODPECKER_HEALTHCHECK=true
WOODPECKER_HEALTHCHECK_ADDR=:3000

标签过滤系统

Woodpecker Agent支持标签系统,用于工作流过滤:

WOODPECKER_AGENT_LABELS=env=production,arch=amd64,team=backend

在流水线配置中使用标签过滤:

labels:
  - env=production
  - arch=amd64

性能优化配置

并行处理优化

# 增加并行工作流数量
WOODPECKER_MAX_WORKFLOWS=8

# 调整资源限制
WOODPECKER_BACKEND_DOCKER_MEMORY_LIMIT=4g
WOODPECKER_BACKEND_DOCKER_CPU_LIMIT=4

连接池优化

# gRPC连接保持
WOODPECKER_KEEPALIVE_TIME=30s
WOODPECKER_KEEPALIVE_TIMEOUT=10s

监控与日志配置

日志级别配置

WOODPECKER_LOG_LEVEL=debug
WOODPECKER_DEBUG_PRETTY=true
WOODPECKER_DEBUG_NOCOLOR=false

健康监控端点

# 检查代理健康状态
curl http://localhost:3000/healthz

故障排除指南

常见问题及解决方案

问题现象可能原因解决方案
代理无法连接服务器网络问题或密钥错误检查网络连通性和密钥配置
工作流执行失败资源不足或权限问题调整资源限制和权限配置
并行处理性能差MAX_WORKFLOWS设置过低增加并行工作流数量

诊断命令

# 检查代理状态
systemctl status woodpecker-agent

# 查看代理日志
journalctl -u woodpecker-agent -f

# 测试服务器连接
nc -zv woodpecker-server 9000

最佳实践

安全实践

  1. 使用强密钥:生成32字节的随机密钥

    openssl rand -hex 32
    
  2. 最小权限原则:为代理配置最小必要的系统权限

  3. 网络隔离:将代理部署在隔离的网络环境中

高可用部署

mermaid

监控告警配置

建议监控以下指标:

  • 代理连接状态
  • 工作流执行成功率
  • 系统资源使用率
  • 网络延迟和吞吐量

总结

Woodpecker CI Agent的配置虽然简单,但提供了丰富的定制选项来满足不同场景的需求。通过合理的配置,可以实现:

  • 高性能:通过并行处理和资源优化
  • 高可用:通过集群部署和负载均衡
  • 安全性:通过严格的权限控制和网络隔离
  • 可维护性:通过完善的监控和日志系统

掌握Woodpecker Agent的配置技巧,将帮助您构建稳定、高效的CI/CD流水线,提升软件交付效率和质量。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值