インストールスクリプトを作成する必要があります。デジタル海コマンドラインインターフェイス文書「ツールジタブ使用カールしかし、問題があります。ファイル名はバージョン番号によって変更されるため、ハードコーディングでは新しいバージョンがリリースされるたびにスクリプトを編集する必要があるため、自動化ポイント全体が無効になります。
変数ディレクトリとファイル名へのパスに単にアスタリスク(または一部では「アスタリスク」と呼ばれる)を使用することは機能しません。
私が使うべきパス:
https://github.com/digitalocean/doctl/releases/download/v1.15.0/doctl-1.15.0-linux-amd64.tar.gz
ご覧のとおり、ファイルがあるディレクトリもバージョン番号によって異なります。
私は問題を解決する方法を示しますが、それは最もエレガントな解決策ではないかもしれません。もっと簡単なものがあれば共有してください!
答え1
以前と同じように実行しますcurl -sL
(進行状況バーを削除してリダイレクトに従ってください)、最新のlinux-amd64バージョンのURLを提供してください。
curl -sL "$(curl -L -s https://api.github.com/repos/digitalocean/doctl/releases/latest |
jq -r '.assets[] | select(.name | contains("-linux-amd64.tar.gz")).browser_download_url')" |
tar -xzv
内部コマンド置換はgithub APIに最新バージョンのリポジトリを要求し、その名前に対応するjq
文字列を含む要素をパイプし-linux-amd64.tar.gz
てダウンロードURLを返します。
答え2
パスを(3)部分に分割します。
- 非変数ベース:100%予測可能で将来にも変わらない経路の一部
https://github.com/digitalocean/doctl/releases/download/
- 変数ディレクトリ名:ディレクトリ名はバージョン番号です。したがって、変更可能であってもセマンティクスのバージョン管理(https://semver.org/):
v$(curl -s https://github.com/digitalocean/doctl/releases/ | grep -om 1 'doctl-.*-linux-amd64.tar.gz'|grep -Eo '[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}')/
作業は、最新のファイルを見つけてバージョン番号を抽出することです。から」V「ディレクトリ名はファイル名の一部ではないため、キャプチャできません。grep。だから私は自分の入力変数の前にハードコードしました。
- 変数ファイル名:次の式の操作は最新バージョン( "m1”部分)ファイル名:
$(curl -s https://github.com/digitalocean/doctl/releases/ | grep -om 1 'doctl-.*-linux-amd64.tar.gz')
全体の醜いものは次のとおりです(「|tar-xzv「最後に釘付けました):
curl -sL https://github.com/digitalocean/doctl/releases/download/v$(curl -s https://github.com/digitalocean/doctl/releases/ | grep -om 1 'doctl-.*-linux-amd64.tar.gz'|grep -Eo '[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}')/$(curl -s https://github.com/digitalocean/doctl/releases/ | grep -om 1 'doctl-.*-linux-amd64.tar.gz') | tar -xzv
このダウンロードはスクリプトを手動で編集しなくても成功します(今後のリリースではファイル名とディレクトリ名が変更される予定です)。
繰り返しますが、これは最もエレガントな解決策ではないかもしれませんが、問題を効果的に解決します。もっと良い方法があれば共有してください! HTH-