concourse/git-resourceGit Resource 是 Concourse CI/CD 系统的核心资源类型之一,用于与 Git 仓库交互,实现对代码仓库提交历史的跟踪、代码拉取及变更检测。其主要用途包括:在 Concourse 流水线中作为代码源,触发流水线执行(基于代码变更),以及获取构建、测试或部署所需的源代码。
fetch_depth)以优化性能。include_submodules),支持递归拉取子模块。check 操作)。在 Concourse 流水线配置文件(pipeline.yml)中,通过 resources 字段定义 Git Resource,指定资源类型(type: git)、名称及源配置(source)。
source)| 参数 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
repo | string | Git 仓库 URL(支持 https:// 或 git@ 格式) | 是 |
branch | string | 跟踪的分支名(默认:main 或仓库默认分支) | 否 |
tag | string | 跟踪的标签名(与 branch、commit 互斥,优先级:commit > tag > branch) | 否 |
commit | string | 固定拉取的提交哈希(完整 40 位 SHA-1 哈希) | 否 |
private_key | string | SSH 认证私钥(用于 git@ 格式仓库,需配置换行符转义 ` | `) |
username | string | HTTPS 认证用户名(用于 https:// 格式仓库,与 password 配合使用) | 否 |
password | string | HTTPS 认证密码(或个人访问令牌,如 GitHub PAT) | 否 |
fetch_depth | integer | 拉取代码的深度(默认:全量拉取;设为 1 时仅拉取最新提交,优化速度) | 否 |
include_submodules | boolean | 是否拉取子模块(默认:false;设为 true 时拉取所有子模块) | 否 |
params)在流水线任务(jobs)中使用该资源时,可通过 params 配置拉取行为,常见参数:
| 参数 | 类型 | 描述 |
|---|---|---|
path | string | 代码拉取到任务容器内的路径(默认:当前工作目录) |
submodules | string | 子模块拉取策略(none/recursive,覆盖 source 中的 include_submodules) |
get):通过 get: <resource-name> 在任务中拉取代码,支持配置 params 自定义拉取行为。put):通常不用于主动推送代码(需配合 Git 命令),主要用于传递代码变更元数据(如提交哈希)给下游任务。yamlresources: - name: my-git-repo type: git source: repo: [***] # 公开仓库 URL branch: main # 跟踪 main 分支 fetch_depth: 10 # 仅拉取最近 10 次提交
yamlresources: - name: private-git-repo type: git source: repo: ***:example/private-project.git # SSH 格式仓库 URL branch: dev # 跟踪 dev 分支 private_key: | # SSH 私钥(注意换行符转义) -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAv...(完整私钥内容)... -----END RSA PRIVATE KEY----- include_submodules: true # 拉取子模块
yamlresources: - name: tagged-git-repo type: git source: repo: [***] tag: v1.0.0 # 固定拉取 v1.0.0 标签的代码(忽略 branch 配置)
yamljobs: - name: build-project plan: - get: my-git-repo # 拉取上述定义的 my-git-repo 资源 params: path: src # 代码拉取到任务容器的 src 目录 - task: compile config: platform: linux image_resource: type: registry-image source: {repository: golang, tag: 1.21} inputs: - name: my-git-repo # 依赖拉取的代码作为输入 run: path: sh args: - -c - | cd src/my-git-repo # 进入代码目录 go build -o app # 执行构建命令
private_key、password)建议通过 Concourse Credentials Manager(如 Vault、CredHub)存储,避免明文写在配置中。fetch_depth 限制拉取深度,或使用 include_submodules: false 减少子模块拉取,提升性能。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务