privateのgithubからファイルをCLIでダウンロードする

privateじゃなければブラウザのURLをwgetでそのまま取得できるのですが、privateの方はapiの方を使わないといけないようです。

ソースコードのダウンロードであれば以下のような zipball, tarball のURLで取得可能ですが、

curl -L -o file.zip -H 'Authorization: token {TOKEN}}' https://api.github.com/repos/{repo_name}/{project_name}}/zipball/{tag_name}

成果物の方はAPIを叩いてもそういったものが出てきません。

まず成果物のURLを取得します、

curl -s -H 'Authorization: token {TOKEN}' https://api.github.com/repos/{repo_name}/{project_name}/releases/tags/{tag_name}

この中のassetsのurlがそれに当たります。jqが使えれば以下で取得

curl -s -H 'Authorization: token {TOKEN}' https://api.github.com/repos/{repo_name}/{project_name}/releases/tags/{tag_name} | jq '.assets[0].url'

取得したURLは下記のようなものです、

https://api.github.com/repos/{repo_name}/{project_name}/releases/assets/{id}

これに対してTOKENを付与してwgetをすることでダウンロードできます。

wget --auth-no-challenge --header="Accept:application/octet-stream" -O file.zip https://{TOKEN}:@api.github.com/repos/{repo_name}/{project_name}/releases/assets/{id}