concourse/pool-resourcePool Resource 是一个提供锁池(模拟信号量)机制的工具,用于锁定需要串行交互的实体(如环境、流水线流程等),确保其按顺序被访问。该资源基于 Git 仓库实现锁状态的存储与管理,其配置方式与 Concourse 的 git-resource 高度兼容,便于集成到现有 CI/CD 流程中。
git-resource 基本一致,降低使用门槛。与 git-resource 配置兼容,主要包括 Git 仓库连接参数:
| 参数名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
repo | string | Git 仓库 URL(支持 HTTP/HTTPS 或 SSH 协议) | 是 |
branch | string | 存储锁状态的 Git 分支(默认:main) | 否 |
private_key | string | SSH 私钥(用于访问私有 Git 仓库,公开仓库无需配置) | 否 |
paths | array | 监控指定路径的文件变更(仅当锁状态文件位于特定路径时配置) | 否 |
ignore_paths | array | 忽略指定路径的文件变更 | 否 |
| 参数名 | 类型 | 描述 | 适用操作 |
|---|---|---|---|
lock_name | string | 锁名称(唯一标识一个锁实例,如 staging-env、db-deploy) | put |
unlock | bool | 是否释放锁(true 表示释放,默认:false) | put |
在 Concourse Pipeline 中定义 Pool Resource 类型及实例:
yamlresources: - name: environment-locks type: pool source: repo: ***:your-org/lock-repo.git # 存储锁状态的 Git 仓库 branch: main # 分支 private_key: ((git-private-key)) # SSH 私钥(私有仓库必填)
在 Job 中通过 get 步骤获取锁:
yamljobs: - name: deploy-to-staging plan: - get: environment-locks params: {lock_name: staging-env} # 获取名为 "staging-env" 的锁 - task: deploy config: # 部署任务配置(略)
在 Job 完成后通过 put 步骤释放锁:
yamljobs: - name: deploy-to-staging plan: # ... 部署任务步骤 ... - put: environment-locks params: {lock_name: staging-env, unlock: true} # 释放 "staging-env" 锁
Pool Resource 通常作为 Concourse 资源类型集成,无需单独部署 Docker 容器。以下是完整的 Concourse Pipeline 示例(pipeline.yml):
yaml--- resource_types: - name: pool type: docker-image source: repository: concourse/pool-resource # Pool Resource 官方镜像 resources: - name: app-code type: git source: repo: ***:your-org/app.git branch: main private_key: ((app-repo-key)) - name: env-locks type: pool source: repo: ***:your-org/locks.git branch: main private_key: ((locks-repo-key)) jobs: - name: test-and-deploy plan: - get: app-code trigger: true - get: env-locks params: {lock_name: test-env} # 获取测试环境锁 - task: run-tests config: platform: linux image_resource: type: docker-image source: {repository: alpine} inputs: [{name: app-code}] run: path: sh args: ["-c", "cd app-code && ./run-tests.sh"] - put: env-locks params: {lock_name: test-env, unlock: true} # 释放测试环境锁
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务