Drone CI 中文文档

GitHub Teams

Drone 提供了一个官方扩展,用于基于 GitHub 组织和团队成员资格来限制系统访问。你可以使用此扩展来配置访问策略,例如:

  • 如果用户是组织成员,则授予访问权限
  • 如果用户是组织管理员,则授予管理员访问权限
  • 如果用户是指定团队的成员,则授予管理员访问权限(可选)
  • 否则拒绝访问

配置

  • DRONE_GITHUB_ENDPOINT
    GitHub API 基础 URL。仅在与 GitHub Enterprise 集成时需要。URL 格式应为 http(s)://[hostname]/api/v3
  • DRONE_GITHUB_TOKEN
    GitHub API 个人访问令牌。此令牌必须具有足够的权限来访问组织和团队端点。
  • DRONE_GITHUB_ORG
    以逗号分隔的组织列表。如果定义了此参数,用户必须是列表中至少一个组织的成员。
  • DRONE_GITHUB_TEAM
    以逗号分隔的团队列表。如果定义了此参数,属于此团队的成员将被授予管理员访问权限。

安装

  1. 创建一个共享密钥。

    $ openssl rand -hex 16
    bea26a2221fd8090ea38720fc445eca6
    
  2. 下载并运行扩展。

    $ docker run -d \
    --publish=3000:3000 \
    --env=DRONE_DEBUG=true \
    --env=DRONE_SECRET=bea26a2221fd8090ea38720fc445eca6 \
    --env=DRONE_GITHUB_TOKEN=3da541559918a808c2402bba5012f6c6 \
    --env=DRONE_GITHUB_ORG=acme \
    --env=DRONE_GITHUB_TEAM=admins \
    --restart=always \
    --name=admitter drone/drone-admit-members
    
  3. 更新 Drone Server 配置以包含扩展地址和共享密钥。

    DRONE_ADMISSION_PLUGIN_ENDPOINT=http://1.2.3.4:3000
    DRONE_ADMISSION_PLUGIN_SECRET=bea26a2221fd8090ea38720fc445eca6
    

验证安装结果

你可以使用命令行工具验证扩展是否已配置并正在处理请求。

  1. 为命令行工具提供扩展端点和密钥。

    export DRONE_ADMISSION_ENDPOINT=http://localhost:3000
    export DRONE_ADMISSION_SECRET=bea26a2221fd8090ea38720fc445eca6
    
  2. 使用命令行工具检查用户是否被接纳:

    drone plugins admit octocat
    

自定义

此扩展被认为是访问准入控制器的参考实现,功能范围有限。鼓励你根据需要 fork 并自定义此扩展。你可以在 drone/drone-admit-members 找到源代码。