Concourse 8.3.1 介绍与选型指南

介绍 Concourse 8.3.1:流水线式 CI/CD 系统的 ATC/TSA/Worker 架构、声明式流水线与资源模型、官方快速开始路径、适用场景与 Jenkins/GitLab CI/Drone/Woodpecker 量化对比与选型建议。

Concourse2026/10/20

Concourse 8.3.1 介绍与选型指南

本文为 A1 认知篇(软件介绍与选型指南),全部信息来自官方公开资料溯源(官方文档站点 concourse-ci.org、GitHub 官方仓库发行记录、shields.io 徽章接口),不含本地安装与实测数据。文末附官方来源清单。

一、环境信息

项目值来源与查询日期
软件名称Concourse(Concourse CI)官方站点 concourse-ci.org,2026-10-20 查询
当前最新稳定版8.3.1GitHub 官方仓库 releases.atom(v8.3.1 发布于 2026-10-02),2026-10-20 查询
开发语言GoGitHub 官方仓库 concourse/concourse,2026-10-20 查询
开源许可证Apache License 2.0GitHub 官方仓库 License 标识,2026-10-20 查询
GitHub Stars7.9kshields.io 徽章接口 img.shields.io/github/stars/concourse/concourse.json,2026-10-20 查询
官方站点https://concourse-ci.org2026-10-20 查询
源码仓库https://github.com/concourse/concourse2026-10-20 查询
官方文档https://concourse-ci.org/docs/2026-10-20 查询

GitHub Stars 实时徽章(数值随时间变化,以徽章实时渲染为准):

GitHub stars

💡 版本说明:Concourse 自 7.x 系列后进入 8.x 系列,8.3.1 为当前 8.x 稳定线最新补丁版本(2026-10-02 发布)。官方 Download 页与 GitHub Releases 均以 v主版本.次版本.补丁 形式发布,选用时应避开 rc(候选版)与 alpha(内测版)后缀。

二、软件概述

Concourse 是一个开源的流水线式持续集成/持续交付(CI/CD)系统,使用 Go 语言编写,采用"流水线即代码"的声明式理念:所有构建逻辑以 YAML 文件描述,纳入版本管理,任何一次交付过程都能被完整追溯与复现。

Concourse 的设计哲学可以概括为三点:

  1. 重新运行一切(Rerun Everything):流水线中的每个作业都在一次性隔离执行环境中运行,不依赖上次运行留下的任何状态。环境干净、结果可信,问题排查不再受"上次构建残留"干扰。
  2. 声明式配置:流水线、资源、作业、任务全部由 YAML 声明,没有隐藏的服务端状态。流水线文件即唯一事实来源,fly set-pipeline 之后的差异一目了然。
  3. 资源驱动(Resource-driven):一切触发与产物都抽象为"资源(Resource)"——Git 仓库、制品仓库、时间表、S3 对象等。资源由系统持续检查新版本,检测到新版本即触发下游作业,形成"检查 → 触发 → 执行 → 产出"的自动化闭环。

Concourse 由 Pivotal(现 VMware Tanzu)团队于 2014 年前后发起,长期服务于大规模软件交付场景,2024 年起由独立的 Concourse 社区维护(concourse/concourse 开源仓库,Apache-2.0 许可证)。

三、核心架构

Concourse 采用典型的"Web 节点 + Worker 节点 + 数据库"三层结构。各组件职责如下:

┌─────────────────────────── Web 节点 ───────────────────────────┐
│                                                                │
│   ┌───────────┐      ┌───────────┐      ┌───────────────────┐  │
│   │   ATC     │◄────►│   TSA     │      │    PostgreSQL     │  │
│   │ API/调度  │ 注册 │ SSH 网关  │      │  唯一持久化存储   │  │
│   └─────┬─────┘ 通道 └─────┬─────┘      └─────────▲─────────┘  │
│         │                  │                      │            │
└─────────┼──────────────────┼──────────────────────┼────────────┘
          │ HTTP(S)          │ SSH(2222)            │ SQL
          │                  │                      │
   ┌──────▼──────┐    ┌──────▼──────────────────────┴───────────┐
   │   fly CLI   │    │              Worker 节点                │
   │  用户终端   │    │  ┌──────────────┐  ┌─────────────────┐  │
   └─────────────┘    │  │  运行时引擎   │  │   Baggageclaim  │  │
                      │  │ (containerd/ │  │  卷管理服务     │  │
                      │  │  guardian)   │  │ (输入/输出/缓存)│  │
                      │  └──────────────┘  └─────────────────┘  │
                      └─────────────────────────────────────────┘

3.1 Web 节点:ATC + TSA

  • ATC(Air Traffic Control):Web 节点的核心进程,承担全部职责——提供 Web UI 与 REST API、解析并保存流水线配置、调度作业构建、驱动资源检查器(Resource Checker)周期性检测新版本、管理团队与权限。默认监听 8080 端口。
  • TSA(worker 注册网关):基于 SSH 的 worker 注册与命令转发通道。Worker 通过 TSA 完成身份认证(RSA 密钥对)后保持长连接,ATC 借助 TSA 向 Worker 下发"启动检查/构建"等指令。默认监听 2222 端口。

Web 节点无状态,所有持久化数据(流水线配置、构建历史、资源版本、用户与团队)都保存在 PostgreSQL 中,因此 Web 节点可以水平扩展为多实例(配合共享 PostgreSQL)。

3.2 Worker 节点:运行时引擎 + Baggageclaim

  • 运行时引擎:在一次性隔离执行环境中运行任务。8.x 版本支持两种运行时:containerd(当前默认推荐,基于 containerd + runc + CNI 网络)与 guardian(原 Garden,Cloudfoundry 血统)。每个任务的输入、脚本执行、输出都在独立的隔离环境中完成,任务结束即销毁。
  • Baggageclaim:Worker 上的卷管理服务,负责管理"资源卷"(版本缓存)、"输入卷"(任务输入)与"输出卷"(任务产物)。支持 overlay 等驱动,卷可在 Worker 间迁移(cache streamed volumes 特性),是构建缓存与产物传递的基础。
  • beacon:Worker 内通过 TSA 建立的反向连接通道,负责心跳注册与命令转发。

3.3 fly CLI

fly 是 Concourse 唯一官方命令行工具(Go 编写,单二进制),几乎所有管理操作都通过 fly 完成:登录、设置流水线、触发构建、查看与下载产物、进入执行环境排障等。fly 可直接从 Concourse Web 节点下载(/api/v1/cli 端点或 Web UI 的 download-fly 页面),保证 CLI 与服务端版本一致。

3.4 核心概念速览

概念说明
Pipeline(流水线)作业与资源的编排图,YAML 声明,可设置暂停/公开等状态
Resource(资源)版本化的外部实体:Git 仓库、制品仓库、时间表、S3 对象等,由 check 脚本检测版本、get 拉取、put 发布
Job(作业)由 build plan 构成的执行单元,可手动触发或被资源新版本/上游作业自动触发
Task(任务)计划中的最小执行单元,声明平台、运行环境来源、输入与执行命令
Plan(构建计划)作业内部步骤的组合(task、get、put、try、in_parallel、aggregate 等)
Team(团队)多租户隔离单元,拥有独立流水线与成员权限,main 团队随集群初始化创建

四、功能特性

  1. 声明式流水线即代码:单一 YAML 描述完整交付流程,fly set-pipeline 时以 diff 形式展示变更,配合 Git 审计流水线演进史。
  2. 资源抽象与自动触发:内置 git、registry-image、s3、time、docker-image、semver 等常用资源类型;任何实现 check/get/put 协议的自定义脚本均可注册为新资源类型,生态扩展成本极低。
  3. 一次性隔离执行环境:任务默认在干净环境中运行,基于 containerd/guardian 运行时与独立网络命名空间,杜绝环境污染类"玄学故障"。
  4. 多团队与多种认证方式:本地账号(CONCOURSE_ADD_LOCAL_USER)开箱即用;同时支持 GitHub、GitLab、Gitea、Bitbucket Cloud、LDAP、OIDC、SAML、OAuth、Cloud Foundry UAA 等企业级身份源。
  5. 凭据管理体系:流水线中的 ((var)) 占位符由凭据管理器在运行时解析,支持 Vault、CredHub、Kubernetes Secrets、AWS SSM/Secrets Manager、Conjur 等后端,避免敏感信息进入 YAML。
  6. 构建可视化:Web UI 以有向图实时呈现流水线全貌,构建日志流式输出、逐任务着色;任何历史构建可一键重跑,输入版本精确定位。
  7. Worker 池与弹性伸缩:Worker 以标签(tag)分组,作业可指定运行池;Worker 掉线自动检测,可配合外部编排实现弹性伸缩。
  8. 单二进制分发:Concourse 全部组件(web/worker/quickstart)与 fly CLI 均为单一 Go 二进制,部署形态简单,官方同时提供 Docker Compose、systemd、BOSH、Helm Chart 等多种安装路径。

五、快速开始(最小可用示例概要)

以下为官方 Quick Start 的最小可用路径(纯官方文档溯源,详见 官方 Quick Start 文档):

第 1 步:一键启动单机集群。 官方提供 quickstart 模式(web + worker 同节点):

curl -O https://concourse-ci.org/docker-compose.yml
docker compose up -d

官方文档说明:服务将在 localhost:8080 就绪,默认本地账号 test/test。

第 2 步:安装 fly CLI。 从 Web 节点直接下载(v7.14.0 起提供 http://localhost:8080/download-fly 页面;也可使用 API 端点):

curl 'http://localhost:8080/api/v1/cli?arch=amd64&platform=linux' -o fly
chmod +x ./fly && mv ./fly /usr/local/bin/

第 3 步:登录并设置第一条流水线。 编写最简 YAML(一个 job 包含一个 task):

jobs:
- name: hello-world
  plan:
  - task: say-hello
    config:
      platform: linux
      image_resource:
        type: registry-image
        source: {repository: busybox}
      run:
        path: echo
        args: ["hello world"]
fly -t tutorial login -c http://localhost:8080 -u test -p test
fly -t tutorial set-pipeline -p hello-world -c pipeline.yml
fly -t tutorial unpause-pipeline -p hello-world
fly -t tutorial trigger-job -j hello-world/hello-world --watch

执行后可看到构建初始化、拉取 busybox 运行环境、输出 hello world 并标记 succeeded 的完整过程,浏览器访问 http://localhost:8080 可见流水线拓扑图与实时构建日志。

六、适用场景与限制

6.1 适用场景

  • 对交付可重复性要求高的团队:交付链路要求"每次构建完全一致、可完整追溯",Concourse 的一次性执行环境与声明式配置是核心竞争力。
  • 中大型平台的发布流水线:资源模型天然覆盖"检测变更 → 构建产物 → 部署验证"闭环,适合支撑 DevOps 平台底座。
  • BOSH/Cloud Foundry/Tanzu 生态交付:Concourse 与该生态工具链同源,官方运维脚本与最佳实践沉淀充分。
  • 需要强隔离的多租户 CI:团队模型 + Worker 池 + 隔离执行环境,适合一台集群服务多条业务线的场景。

6.2 限制与注意点

  • 学习曲线偏陡:plan/step 组合式 YAML 语法与其他 CI 的线性脚本差异较大,团队需一定适应成本。
  • 必须自建 Worker 与 PostgreSQL:官方不提供托管服务,数据库与 Worker 节点需自行规划容量与高可用。
  • 插件生态以"资源类型"为主:与 Jenkins 上万级插件相比,Concourse 生态聚焦交付领域,通用 IDE/测试管理类扩展较少。
  • 复杂工作流的 YAML 表达较冗长:高度动态或条件繁多的流程(如矩阵构建)在 plan 语法下略显笨重。
  • 执行环境需要预置基础运行环境:任务运行环境来自制品仓库,首次运行需拉取基础文件系统,内网环境需自建制品仓库代理。

七、同类选型对比

与 Jenkins、GitLab CI、Drone、Woodpecker CI 的横向对比(星数取自 shields.io 徽章接口,查询日期 2026-10-20;其余条目以各项目官方文档为依据):

维度Concourse 8.3.1JenkinsGitLab CI(CE)DroneWoodpecker CI
GitHub Stars(2026-10-20)7.9k27k25k(gitlabhq/gitlabhq)39k(harness/drone)8k
开源许可证Apache-2.0MITMIT(CE 核心差异版)Apache-2.0Apache-2.0
开发语言GoJavaRuby/GoGoGo
配置方式自有声明式 YAML(plan/step)Jenkinsfile(Groovy DSL/声明式).gitlab-ci.yml自有 YAML(kind: pipeline)兼容 Drone 风格 YAML
架构形态Web 节点 + Worker 节点 + PostgreSQL控制器 + Agent 插件体系内嵌于 GitLab 单体Server + 可插拔 RunnerServer + Agent(可多 server)
执行隔离强(一次性隔离环境,内置 containerd/guardian)插件实现(Agent 上隔离策略不一)Runner 隔离(docker/k8s/shell)Docker 隔离执行Docker 隔离执行(可 local)
代码托管耦合无耦合(resource 抽象,任意 Git)无耦合(插件适配)与 GitLab 深度绑定GitHub/GitLab/Gitea/Bitbucket 等Gitea/GitHub/GitLab 等
触发模型资源版本持续检查驱动Webhook/定时/手动CI/CD 关键字 + 规则Webhook + cronWebhook + cron
适合场景交付流水线平台、强可重复性要求传统企业异构构建、插件生态依赖已用 GitLab 全家桶轻量云原生 CI轻量自托管、Gitea 生态

选型建议:

  • 已深度使用 GitLab:优先 GitLab CI,零额外组件成本。
  • 需要海量现成插件、历史包袱重的异构环境:Jenkins 仍是事实标准。
  • 追求轻量、配置贴近 GitHub Actions 风格:Drone 或 Woodpecker CI(后者是 Drone 0.8 社区分叉,发展活跃)。
  • 把 CI/CD 当作"交付平台"而非"脚本运行器",强调每次构建干净、可复现、可视化追溯到版本级:Concourse 是最契合的选择。

八、参考链接

官方来源(本文数据溯源清单):

  1. Concourse 官方站点:https://concourse-ci.org
  2. Concourse 官方文档(概念/安装/参考):https://concourse-ci.org/docs/
  3. 官方 Quick Start:https://concourse-ci.org/docs/getting-started/quick-start/
  4. 官方 Docker Compose 安装指南:https://concourse-ci.org/docs/install/guides/docker-compose/
  5. 官方密钥生成说明:https://concourse-ci.org/docs/install/generating-keys/
  6. GitHub 官方仓库发行记录(releases.atom,v8.3.1,2026-10-02 发布):https://github.com/concourse/concourse/releases.atom
  7. GitHub 官方仓库:https://github.com/concourse/concourse
  8. shields.io GitHub Stars 徽章接口(2026-10-20 查询):https://img.shields.io/github/stars/concourse/concourse.json

本系列篇目(Concourse 实战系列):