如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个用于GitHub拉取请求(PR)的Concourse资源,采用Go语言编写,基于GitHub V4 (GraphQL) API。受原始资源启发,但具有重要差异:通过GraphQL API减少API调用次数、获取时合并PR特定提交到最新基础分支、提供PR和基础分支的提交SHA元数据、支持Webhook且无缓存机制。
check操作使用GraphQL API,每100个开放PR仅需1次API调用,显著降低GitHub API速率限制压力get操作将PR的特定提交合并到最新基础分支,确保测试和状态设置基于准确提交get和put操作提供PR及基础分支的提交SHA等元数据,可通过JSON文件或单独文件供任务使用push和pull_request事件)高效触发,适合低流量仓库及来自fork的PR适用于Concourse CI/CD管道,用于监控GitHub仓库的拉取请求,自动触发构建、测试流程,并更新PR状态(如pending、success、failure)或添加评论。特别适合需要高效处理PR、依赖准确合并测试结果的开发团队,支持公共和私有仓库。
| 参数 | 是否必填 | 示例 | 描述 |
|---|---|---|---|
repository | 是 | itsdalmo/test-repository | 目标仓库。 |
access_token | 是 | 具有仓库访问权限的GitHub访问令牌(用于设置提交状态)。注意:私有仓库需设置repo:full权限,公共仓库repo:status权限足够。 | |
v3_endpoint | 否 | https://api.github.com | GitHub V3 API(RESTful)的端点。 |
v4_endpoint | 否 | https://api.github.com/graphql | GitHub V4 API(GraphQL)的端点。 |
paths | 否 | ["terraform/*/*.tf"] | 仅当PR包含匹配一个或多个glob模式或前缀的文件更改时,才生成新版本。 |
ignore_paths | 否 | [".ci/"] | 与上述相反。模式语法参考filepath.Match,或指定路径前缀(如.ci/匹配.ci目录下所有内容)。 |
disable_ci_skip | 否 | true | 禁用通过提交消息或PR标题中的[ci skip]和[skip ci]跳过构建的功能。 |
skip_ssl_verification | 否 | true | 禁用git和API客户端的SSL/TLS证书验证。谨慎使用! |
disable_forks | 否 | true | 如果PR来自与配置仓库不同的fork,则禁用资源触发。 |
ignore_drafts | 否 | false | 如果PR处于草稿状态,则禁用资源触发。 |
required_review_approvals | 否 | 2 | 如果PR未获得至少X个批准审核,则禁用资源触发。 |
git_crypt_key | 否 | AEdJVENSWVBUS0VZAAAAA... | Base64编码的git-crypt密钥。设置后将使用git-crypt解锁/解密仓库。获取密钥可在加密仓库中执行`git-crypt export-key -- - |
base_branch | 否 | master | 分支名称。管道仅对针对指定分支的PR触发。 |
labels | 否 | ["bug", "enhancement"] | PR上的标签。管道仅对具有至少一个指定标签的PR触发。 |
disable_git_lfs | 否 | true | 禁用Git LFS,跳过将跟踪文件的指针转换为对应对象的尝试。 |
states | 否 | ["OPEN", "MERGED"] | 要选择的PR状态(OPEN、MERGED或CLOSED)。管道仅对匹配指定状态之一的PR触发。默认值为["OPEN"]。 |
注意:
v3_endpoint,则必须同时设置v4_endpoint(反之亦然)required_review_approvals时,建议启用GitHub的分支保护规则,以https://help.github.com/en/articles/enabling-required-reviews-for-pull-requestscheck
为所有提交(自上次版本后)生成新版本,按提交日期排序。版本表示结构:
pr:拉取请求编号commit:提交SHAcommitted:提交时间戳(用于过滤后续检查)approved_review_count:PR的批准审核数量若多个提交同时推送到某个PR,最后一个提交将成为新版本。
Webhook注意事项:
资源不实现缓存,配合Webhook使用时需订阅push和pull_request事件。注意:从fork打开的PR及对该fork的提交不会通过Webhook生成通知,低流量仓库且预期有fork PR时,建议设置check_every: 1m主动发现版本。
get
| 参数 | 是否必填 | 示例 | 描述 |
|---|---|---|---|
skip_download | 否 | true | 在put步骤中与get_params配合使用,使隐式get不执行任何操作 |
integration_tool | 否 | rebase | 集成工具,可选merge、rebase或checkout,默认为merge |
git_depth | 否 | 1 | 使用--depth Git选项进行浅克隆 |
submodules | 否 | true | 递归克隆git子模块,默认为false |
list_changed_files | 否 | true | 生成更改文件列表并与元数据一起保存 |
fetch_tags | 否 | true | 从远程仓库获取标签 |
功能说明:
克隆基础分支(如master)的最新提交,并将PR的指定提交合并到基础分支。确保测试和状态设置基于输入请求的确切提交。元数据通过以下文件供任务使用:
.git/resource/version.json:版本信息.git/resource/metadata.json:元数据信息.git/resource/changed_files:更改文件列表(若启用list_changed_files)元数据也作为单独文件存在于.git/resource目录(如base_sha可通过.git/resource/base_sha获取),完整列表见https://github.com/telia-oss/github-pr-resource/blob/master/in.go#L66%E3%80%82
使用skip_download的 workaround:
yamlput: update-status # 为pull-request资源使用别名 resource: pull-request params: path: pull-request status: pending get_params: {skip_download: true}
put
| 参数 | 是否必填 | 示例 | 描述 |
|---|---|---|---|
path | 是 | pull-request | GET步骤中给资源指定的名称 |
status | 否 | SUCCESS | 设置提交状态,可选SUCCESS、PENDING、FAILURE或ERROR |
base_context | 否 | concourse-ci | 状态上下文的基础前缀,默认为concourse-ci |
context | 否 | unit-test | 状态上下文,前缀为base_context,默认为status |
comment | 否 | hello world! | 添加到PR的评论 |
comment_file | 否 | my-output/comment.txt | 包含PR评论的文件路径(如terraform plan输出) |
target_url | 否 | $ATC_EXTERNAL_URL/builds/$BUILD_ID | 状态详情链接,默认为Concourse构建页面 |
description | 否 | Concourse CI build failed | PR状态描述 |
description_file | 否 | my-output/description.txt | 包含PR状态描述的文件路径 |
delete_previous_comments | 否 | true | 添加新评论前删除此资源的旧评论,用于移除过时信息 |
环境变量展开:comment、comment_file和target_url支持环境变量展开(如$ATC_EXTERNAL_URL),详见Concourse元数据文档。
yamlresource_types: - name: pull-request type: docker-image source: repository: teliaoss/github-pr-resource resources: - name: pull-request type: pull-request check_every: 24h webhook_token: ((webhook-token)) source: repository: itsdalmo/test-repository access_token: ((github-access-token)) jobs: - name: test plan: - get: pull-request trigger: true version: every - put: pull-request params: path: pull-request status: pending - task: unit-test config: platform: linux image_resource: type: docker-image source: {repository: alpine/git, tag: "latest"} inputs: - name: pull-request run: path: /bin/sh args: - -xce - | cd pull-request git log --graph --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" > log.txt cat log.txt on_failure: put: pull-request params: path: pull-request status: failure - put: pull-request params: path: pull-request status: success
GitHub API速率限制为每小时5000次请求(每用户):
操作成本示例:
check:大型仓库测试成本
get:固定成本1(获取指定提交的PR)put:基础成本1,每增加status/comment/comment_file等操作+1若从[jtarchie/github-pullrequest-resource][original-resource]迁移,需注意以下差异:
新增参数
source:v4_endpointput:comment参数重命名
source:
repo → repositoryci_skip → disable_ci_skip(逻辑反转,默认true)api_endpoint → v3_endpointbase → base_branchbase_url → target_urlrequire_review_approval → required_review_approvals(从bool改为int)get:git.depth → git_depthput:comment → comment_file(因新增comment参数)不再需要的参数
src:uri、private_key、username、password、only_mergeableget:fetch_merge(强制合并)未包含的参数
src:authorship_restriction、label、git_config(信息从元数据文件获取)get:git.*(git_depth除外)put:merge.*、labelConcourse v5.0.0以下迁移注意:可能出现failed to unmarshal request: json: unknown field "ref"错误,解决方法是重命名资源以清除历史记录,详见https://github.com/telia-oss/github-pr-resource/issues/64%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务