Githubリポジトリからバージョン番号を抽出する

Githubリポジトリからバージョン番号を抽出する

こんにちは。 Githubリリースサイトからバージョン番号を抽出しようとしています。後でAnsibleロールが必要です。

たとえば、githubから最新バージョンのneovimの正しいバージョン番号を取得したいとします。これまで私はこれを得ました:

curl -s https://api.github.com/repos/neovim/neovim/releases/latest | grep NVIM | cut -c 1-35

出力は次のとおりです

  "body": "```\nNVIM v0.9.0\nBuild

私は成功せずにバージョン番号を抽出するためにsedを使ってみました。

残念ながら、このブログ投稿は私には適していませんhttps://fabianlee.org/2021/02/16/bash-ok-latest-github-release-tag-and-version/

ベストアンサー1

このリポジトリは正規リリースではなくタグを公開するため、最新バージョンのページ全体を検索し、「v」で始まり、後に数字が続くタグを見つける必要があります。

$ curl -s https://api.github.com/repos/neovim/neovim/releases | \
  jq -r 'first(.[].tag_name | select(test("^v[0-9]")))'
v0.9.0

これは、「v」で始まるバージョンを反映するタグ付きバージョンを公開するすべてのリポジトリに適用されます。

より一般的なアプローチは、タグを見つけることです。

curl -s https://api.github.com/repos/neovim/neovim/tags | \
jq -r 'first(.[].name | select(test("^v[0-9]")))'

これはGitHubバージョンを公開しないプロジェクトにも当てはまります。リリースバージョンプロジェクトでは、これはバージョンに対応するタグだけでなく、すべてのタグと一致します。

一部のプロジェクトでは、前に「v」のないバージョンラベルを使用します。正規表現は、次のことを許可するように具体化できます。

curl -s https:/api.github.com/repos/akucukelbir/resmap/tags | \
jq -r 'first(.[].name | select(test("^v?[0-9]")))'

一部のプロジェクトはタグをまったくプッシュせず、そのための普遍的な解決策はありません。

おすすめ記事