是否可以从特定分支获取最新的 GitHub 版本?
Is it possible to get the latest GitHub release built from a specific branch?
我有一个 Powershell 脚本,它使用 Github API 从存储库获取最新版本。我们想创建此脚本的不同版本,它不是最新版本,而是从 master 创建的最新版本。这可能吗?我查看了 API 页面:https://developer.github.com/v3/repos/releases/#get-the-latest-release 似乎我们只能通过 ID 获取最新版本或特定版本(脚本不知道),或列出版本(但显然不能查询他们?)
如果我之后通过代码过滤列表,那么使用列表发布是可能的...除了,API 每次调用它时都会为我调用 returns 404(尽管有超过400 个版本):
https://api.github.com/repos/my-org/my-repo/releases。
这很奇怪,因为如果我在该组织之外尝试不同的回购协议,它会起作用(returns 一个空数组)。
发布 API 调用返回 404,因为我忘记指定访问令牌:
https://api.github.com/repos/my-org/my-repo/releases?access_token={token}
似乎无法通过 API 执行我要求的操作,但我可以使用 PowerShell 完成:
$releases_url = "https://api.github.com/repos/$repo/releases"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$releases = Invoke-RestMethod -uri "$($releases_url)?access_token=$($token)"
# Get most recent release from the list where name starts with 'master'.
$latestMasterBuild = $releases | Where { $_.name.StartsWith("master") } | Select -First 1
因为我的版本名称以创建它们的分支为前缀。
如果您的版本名称没有特定的命名模式,您可以在 List Releases API 的响应中使用 target_commitish
字段:
Specifies the commitish value that determines where the Git tag is
created from. Can be any branch or commit SHA. Unused if the Git tag
already exists. Default: the repository's default branch (usually
master).
您可以使用以下 curl and jq 命令检查 target_commitish
值:
curl -s "https://api.github.com/repos/facebook/create-react-app/releases?per_page=100" | \
jq -r '.[].target_commitish'
鉴于版本已经按照最新的排在第一位,我们只需要使用 target_commitish
master 的值进行过滤:
curl -s "https://api.github.com/repos/facebook/create-react-app/releases?per_page=100" | \
jq -r '[.[] | select(.target_commitish == "master")][0]'
我有一个 Powershell 脚本,它使用 Github API 从存储库获取最新版本。我们想创建此脚本的不同版本,它不是最新版本,而是从 master 创建的最新版本。这可能吗?我查看了 API 页面:https://developer.github.com/v3/repos/releases/#get-the-latest-release 似乎我们只能通过 ID 获取最新版本或特定版本(脚本不知道),或列出版本(但显然不能查询他们?)
如果我之后通过代码过滤列表,那么使用列表发布是可能的...除了,API 每次调用它时都会为我调用 returns 404(尽管有超过400 个版本): https://api.github.com/repos/my-org/my-repo/releases。 这很奇怪,因为如果我在该组织之外尝试不同的回购协议,它会起作用(returns 一个空数组)。
发布 API 调用返回 404,因为我忘记指定访问令牌:
https://api.github.com/repos/my-org/my-repo/releases?access_token={token}
似乎无法通过 API 执行我要求的操作,但我可以使用 PowerShell 完成:
$releases_url = "https://api.github.com/repos/$repo/releases"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$releases = Invoke-RestMethod -uri "$($releases_url)?access_token=$($token)"
# Get most recent release from the list where name starts with 'master'.
$latestMasterBuild = $releases | Where { $_.name.StartsWith("master") } | Select -First 1
因为我的版本名称以创建它们的分支为前缀。
如果您的版本名称没有特定的命名模式,您可以在 List Releases API 的响应中使用 target_commitish
字段:
Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually master).
您可以使用以下 curl and jq 命令检查 target_commitish
值:
curl -s "https://api.github.com/repos/facebook/create-react-app/releases?per_page=100" | \
jq -r '.[].target_commitish'
鉴于版本已经按照最新的排在第一位,我们只需要使用 target_commitish
master 的值进行过滤:
curl -s "https://api.github.com/repos/facebook/create-react-app/releases?per_page=100" | \
jq -r '[.[] | select(.target_commitish == "master")][0]'