如何从 ruby 的 octokit github 客户端获取所有已部署的提交?

How to fetch all the deployed commits from octokit github client for ruby?

我正在使用 ruby Ocktokit 来获取部署 (list_deployments)。目前它只列出了最新的 30 个。我需要根据有效负载对其进行过滤,并且需要访问迄今为止的所有部署。

GithubApi提供了link在header访问下一页。 Ocktokit 中有类似的东西吗?

client = Octokit::Client.new(
  :access_token => ENV.fetch("GITHUB_TOKEN"),
)

repo = "repo_name"
env  = "env_name"
options = {
    :environment => env,
    :task => "task_name"
  }

deployments = client.deployments(repo, options)

Octokit 提供 pagination 但也提供自动分页。

您也许可以执行以下操作:

client.auto_paginate = true
deployments = client.deployments 'username/repository' # same as list_deployments
deployments.length

更新:我在本地测试了这一点,并以这种方式进行了分页,虽然有记录,但不能按预期进行部署。您需要手动获取部署。

deployment documentation 表示列出所有部署应该在最新版本中可用。

如果这不起作用,您可能需要手动执行:

# fetch your first list of deployments
deployments = client.deployments 'username/repository'

while true
  begin
    deployments.concat client.last_response.rels[:next].get.data
    puts deployments.length
    break if deployments.length > 500
  rescue StandardError
    puts 'quitting'
  end
end

puts deployments.length