Github APIを通じてリリースアセットをアップロードする方法について知りたいと思います。 これ以外には Github reference、 最近の例は見つかりませんでした。Github:Bashでリリースアセットをアップロードする
私は、次のbashスクリプト作成:もちろんperstok
の
#!/bin/sh
## Make a draft release json with a markdown body
release='"tag_name": "v1.0.0", "target_commitish": "master", "name": "myapp", '
body="This is an automatic release\\n====\\n\\nDetails follows"
body=\"$body\"
body='"body": '$body', '
release=$release$body
release=$release'"draft": true, "prerelease": false'
release='{'$release'}'
url="https://api.github.com/repos/$owner/$repo/releases"
succ=$(curl -H "Authorization: token $perstok" --data $release $url)
## In case of success, we upload a file
upload=$(echo $succ | grep upload_url)
if [[ $? -eq 0 ]]; then
echo Release created.
else
echo Error creating release!
return
fi
# $upload is like:
# "upload_url": "https://uploads.github.com/repos/:owner/:repo/releases/:ID/assets{?name,label}",
upload=$(echo $upload | cut -d "\"" -f4 | cut -d "{" -f1)
upload="$upload?name=$theAsset"
succ=$(curl -H "Authorization: token $perstok" \
-H "Content-Type: $(file -b --mime-type $theAsset)" \
--data-binary @$theAsset $upload)
download=$(echo $succ | egrep -o "browser_download_url.+?")
if [[ $? -eq 0 ]]; then
echo $download | cut -d: -f2,3 | cut -d\" -f2
else
echo Upload error!
fi
を、owner
とrepo
変数は、所有者の名前とレポ名とtheAsset
をアップロードする資産のファイル名で、個人的なアクセストークンをエクスポートします。
これはリリースアセットをアップロードする適切な方法ですか?
Accept
ヘッダーを追加する必要がありますか?私はいくつかの例を見つけました
-H "Accept: application/vnd.github.manifold-preview"
しかし、彼らは私に古くなっているようです。
Windows実行ファイルの場合、特定のメディア(MIME)タイプがありますか?
ニースのキャッチは、私の答えよりも正確です。 +1 – VonC