ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

GitHub のリリースをシェルスクリプトで雑に試す

GitHub、リリースを作成した時のレスポンスに upload_url というキーが含まれるので、それをそのまま再利用すればリリースにファイルを添付することができる。

なお、Enterpriseでも同じようにできる。

echo -n "Tag name? "; read tagname

git tag $tagname

tmpdata=/tmp/hoge-binary-release-$$.json

cat <<EOF > $tmpdata
{
  "tag_name": "$tagname",
  "target_commitish": "master",
  "name": "$tagname",
  "body": "release of hoge-binary version $tagname",
  "draft": false,
  "prerelease": false
}
EOF

ret=$( curl -H "Authorization: token $GHE_TOKEN" -XPOST -d @"$tmpdata" https://enterprise.github.local/api/v3/repos/udzura/hoge-binary/releases )

# {?name} という形式でparamsが含まれるので置換
uploadURL=$( echo $ret | jq -r .upload_url | sed "s/{?name}/?name=hoge-binary-$tagname.darwin-amd64.zip/" )


echo "Upload URL: $uploadURL"

ret2=$( curl -H "Authorization: token $GHE_TOKEN" \
  -H "Accept: application/vnd.github.manifold-preview" \
  -H "Content-Type: application/zip" \
  --data-binary @"$FILE_TO_UPLOAD" "$uploadURL" )

echo "Result JSON:"
echo $ret2 | jq .

Makefileなどでキックすると便利では。