0
0

【Tips】GitHubのレジストリからシングルバイナリのコマンドの最新版を取得する

Posted at

やりたいこと

AWS CodeBuildやGitLab-CIのようなCIプラットホームのスクリプト中で各種シングルバイナリのソフトウェアをインストールするときに、aptやらyumが使える場合は良いが、そうでなくてパッケージを取得しなければいけないケースがある。

もちろん、該当のソフトウェアの特定バージョンのパッケージのURLを直打ちすることも可能だが、Trivyのようなセキュリティ系のソフトウェアについては、できれば最新版を使っていきたいので、動的にlatestを引っ張ってきたい。

今回は、そういったときの対応手順を簡単にまとめておく。

解決策: GitHubのAPIを使う

結論を言うと、GitHubのAPIを使うことで、最新版パッケージのバージョンを確認することができる。
たとえば、セキュリティ診断ツールであるTrivyは以下のAPIで取得が可能だ。

$ curl --silent https://api.github.com/repos/aquasecurity/trivy/releases/latest

これを実行すると、JSONで各種アーキテクチャにおけるパッケージ名を確認することが可能だ。

今回欲しいのは、最新版バージョンのタグ名なので、以下のコマンドでtag_nameとその値を抽出する。
そうすると、この記事執筆時点での最新バージョンである0.53.0が取得できる。

$ curl --silent https://api.github.com/repos/aquasecurity/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/'
0.53.0

これを変数に食わせてダウンロードのURLを構築すれば良い。

例えばhadolintのようにバイナリを圧縮せず直接置いているようなものであれば、

$ wget -q https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 -O ${HADOLINT_PATH} && chmod 755 ${HADOLINT_PATH}

と書けば良いし、TrivyのようにRPMのパッケージを置いているケースであれば、

$ rpm -ivh https://github.com/aquasecurity/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.rpm

と書けばよい。パッケージによってパスの組み方は違うので、それに合わせてコマンドを組み立てよう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0