如何允许GitHub App触发CircleCI工作流?DBT提交触发失败求助
问题
我已按照官方文档在GitHub仓库安装了dbt应用,实现推送代码时自动运行dbt任务。目前希望添加CircleCI检查,使其在代码提交时触发,但通过dbt Cloud IDE提交代码时,CircleCI无法触发,报错“Block unregistered user”。经排查发现触发任务的用户是dbt app而非实际提交者,导致该错误。请问是否有办法允许GitHub App触发CircleCI工作流?曾找到相关旧讨论帖,想了解是否有新方案,或是可通过调整dbt端设置解决?
解决方案
1. 将dbt GitHub App纳入CircleCI允许触发名单
在CircleCI项目设置的安全板块中,找到限制上下文或允许用户/团队的配置项,把dbt GitHub App对应的用户ID或应用名称添加到允许触发工作流的列表里。如果界面操作找不到入口,可通过CircleCI API完成添加:
# 替换占位符后执行 curl -X POST \ https://circleci.com/api/v2/project/gh/<你的GitHub用户名>/<仓库名>/settings/allowed-users \ -H "Circle-Token: <你的CircleCI令牌>" \ -H "Content-Type: application/json" \ -d '{"user_id": "<dbt App的用户ID>"}'
dbt App的用户ID可通过GitHub API获取:访问对应应用的API端点,返回结果中的id字段即为所需ID。
2. 调整dbt Cloud提交身份设置
进入dbt Cloud的项目Git集成设置,查找是否有“使用提交者身份触发Webhook”类的选项,开启后可让dbt Cloud提交代码时以实际提交者的身份触发后续工作流,替代dbt App的身份。
3. 在CircleCI配置中直接允许dbt App用户
修改CircleCI的.circleci/config.yml配置文件,在工作流的过滤规则中明确允许dbt App对应的用户名触发任务:
workflows: your-workflow-name: jobs: - your-job-name: filters: committer: only: - dbt-cloud[bot] # 替换为实际的dbt App用户名
内容的提问来源于stack exchange,提问作者Lucas Abreu
相关产品推荐
相关产品推荐

