使用 GitHub GraphQL 搜索带有 *.yml 文件的所有存储库

Posted

技术标签:

【中文标题】使用 GitHub GraphQL 搜索带有 *.yml 文件的所有存储库【英文标题】:Searching for all repositories with *.yml files with GitHub GraphQL 【发布时间】:2021-10-08 23:37:06 【问题描述】:

我想查找组织中所有正在使用工作流文件的存储库以进行进一步分析。

如果我现在有了它的名称,我可以通过 GraphQL 搜索特定文件:


  search(query: "org:rajbos", type: REPOSITORY, last: 100) 
    repositoryCount
    pageInfo 
      endCursor
      startCursor
    
    edges 
      node
        ... on Repository 
          nameWithOwner
          url
          object(expression: "HEAD:README.md") 
            ... on Blob 
              byteSize
            
          
        
      
    
  

如何在特定目录中搜​​索 *.yml 文件?我不知道前面的文件名。

存储库(所有者:“someOwner”,名称:“some-Repo”)

【问题讨论】:

【参考方案1】:

发现您可以在某个位置查询所有存储库的文件,然后过滤该设置的客户端:

query 
 search(first: 100, type: REPOSITORY, query: "org:rajbos") 
   repositoryCount
    edges        
      node 
        ... on Repository   
          nameWithOwner
          object(expression: "main:.github/workflows/") 
            ... on Tree 
              entries 
                name
              
            
          
        
      
    
  

结果:

 
          "node": 
            "nameWithOwner": "rajbos/github-fork-updater",
            "object": 
              "entries": [
                
                  "name": "check-workflow.yml"
                ,
                
                  "name": "update-workflow.yml"
                
              ]
            
          
        

【讨论】:

注意:这不会给你任何分叉,因为这些在 Repository 对象中不可用:-(

以上是关于使用 GitHub GraphQL 搜索带有 *.yml 文件的所有存储库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Github GraphQL搜索我自己的提交?

为 Github GraphQL 搜索选择 *

我可以使用 GraphQL 列出 Github 的公共存储库吗?

带有猫鼬的 GraphQL

使用 mongoose 将带有 graphql 的文件上传到 mongodb

如何使用 GraphQL 通过 slug 进行搜索? - 字段“文章”上的“未知参数”